{
 "cells": [
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:32.903157Z",
     "start_time": "2025-06-30T13:30:32.896673Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 将trade_date字段转成日期格式，并设置为索引字段\n",
    "df = pd.read_csv('600030.csv', parse_dates=['trade_date'], index_col='trade_date')"
   ],
   "id": "884435c3dd841e63",
   "outputs": [],
   "execution_count": 33
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:32.930299Z",
     "start_time": "2025-06-30T13:30:32.925473Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df.sort_index(ascending=True, inplace=True)\n",
    "data = df['close']\n",
    "data"
   ],
   "id": "b992f51263b3de8b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "trade_date\n",
       "2018-01-02    18.44\n",
       "2018-01-03    18.61\n",
       "2018-01-04    18.67\n",
       "2018-01-05    18.88\n",
       "2018-01-08    19.54\n",
       "              ...  \n",
       "2019-12-25    23.13\n",
       "2019-12-26    23.75\n",
       "2019-12-27    23.33\n",
       "2019-12-30    25.66\n",
       "2019-12-31    25.30\n",
       "Name: close, Length: 476, dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 34
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.063870Z",
     "start_time": "2025-06-30T13:30:32.979291Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 绘制收盘价\n",
    "data.plot()"
   ],
   "id": "7999dd49be1a0fe2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='trade_date'>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 35
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.234036Z",
     "start_time": "2025-06-30T13:30:33.230441Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 训练集\n",
    "train_data = data['2018-01-02':'2019-10-08']\n",
    "train_data[:10]"
   ],
   "id": "feed1b1cca2f7c83",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "trade_date\n",
       "2018-01-02    18.44\n",
       "2018-01-03    18.61\n",
       "2018-01-04    18.67\n",
       "2018-01-05    18.88\n",
       "2018-01-08    19.54\n",
       "2018-01-09    19.44\n",
       "2018-01-10    19.61\n",
       "2018-01-11    19.28\n",
       "2018-01-12    19.33\n",
       "2018-01-15    19.45\n",
       "Name: close, dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 36
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.328628Z",
     "start_time": "2025-06-30T13:30:33.324699Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 最后3个月作为测试集\n",
    "test_data = data['2019-10-08':]\n",
    "test_data[:10]"
   ],
   "id": "7a26857f7bf4d0fa",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "trade_date\n",
       "2019-10-08    22.33\n",
       "2019-10-09    22.23\n",
       "2019-10-10    22.39\n",
       "2019-10-11    22.94\n",
       "2019-10-14    23.09\n",
       "2019-10-15    22.69\n",
       "2019-10-16    22.56\n",
       "2019-10-17    22.52\n",
       "2019-10-18    22.00\n",
       "2019-10-21    21.85\n",
       "Name: close, dtype: float64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.402761Z",
     "start_time": "2025-06-30T13:30:33.401322Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "df8d81bfe42d11e9",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.466446Z",
     "start_time": "2025-06-30T13:30:33.461010Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torch.utils.data import DataLoader, Dataset\n",
    "import torch\n",
    "\n",
    "# 超参数设置\n",
    "SEQ_LENGTH = 3  # 输入序列长度\n",
    "BATCH_SIZE = 1\n",
    "HIDDEN_SIZE = 128\n",
    "\n",
    "\n",
    "# 创建训练数据\n",
    "class ZhouyuDataset(Dataset):\n",
    "    def __init__(self, data, seq_length):\n",
    "        self.seq_length = seq_length\n",
    "\n",
    "        # 不做归一化\n",
    "        # self.data = data.values\n",
    "\n",
    "        # 统一做归一化\n",
    "        self.data = (data.values - data.values.min()) / (data.values.max() - data.values.min())\n",
    "\n",
    "        # 分别对inputs、targets做归一化\n",
    "        # 和统一做归一化差不太多\n",
    "        # 比如[0,1,2,3,4,5,6,7,8,9]，最大值是9，最小值是0\n",
    "        # inputs = [[0,1,2],[1,2,3]...[6,7,8]]，比全部数据少3个数，最大值是8，最小值是0\n",
    "        # targets = [3,4,5,6,7,8,9]，比全部数据少3个数，最大值是9，最小值是3\n",
    "        # inputs, targets = [], []\n",
    "        # for i in range(len(data.values) - seq_length):\n",
    "        #     seq = data.values[i:i + seq_length]\n",
    "        #     target = data.values[i + seq_length]\n",
    "        #     inputs.append(seq)\n",
    "        #     targets.append(target)\n",
    "        # inputs = np.array(inputs)\n",
    "        # targets = np.array(targets)\n",
    "        # self.inputs_min = inputs.min()\n",
    "        # self.inputs_max = inputs.max()\n",
    "        # self.targets_min = targets.min()\n",
    "        # self.targets_max = targets.max()\n",
    "        # self.inputs = (inputs - self.inputs_min) / (self.inputs_max - self.inputs_min)\n",
    "        # self.targets = (targets - self.targets_min) / (self.targets_max - self.targets_min)\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.data) - self.seq_length\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        inputs = self.data[idx:idx + self.seq_length]\n",
    "        targets = self.data[idx + self.seq_length]\n",
    "        return torch.tensor(inputs, dtype=torch.float32), torch.tensor(targets, dtype=torch.float32)\n",
    "        # return torch.tensor(self.inputs[idx], dtype=torch.float32), torch.tensor(self.targets[idx], dtype=torch.float32)\n",
    "\n",
    "\n",
    "train_dataset = ZhouyuDataset(train_data, SEQ_LENGTH)\n",
    "train_dataloader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=False)\n",
    "print(train_dataset.data)"
   ],
   "id": "c2154c2415651fd4",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.30201342 0.31627517 0.32130872 0.33892617 0.3942953  0.38590604\n",
      " 0.40016779 0.37248322 0.37667785 0.38674497 0.45385906 0.51174497\n",
      " 0.5511745  0.54110738 0.53355705 0.53439597 0.67785235 0.6283557\n",
      " 0.62919463 0.60989933 0.56963087 0.54110738 0.55872483 0.56040268\n",
      " 0.58305369 0.47902685 0.39513423 0.36912752 0.21057047 0.20889262\n",
      " 0.23322148 0.2340604  0.2659396  0.28104027 0.31963087 0.28607383\n",
      " 0.27432886 0.27600671 0.25083893 0.25419463 0.30033557 0.28775168\n",
      " 0.29781879 0.33724832 0.37416107 0.34479866 0.3238255  0.33221477\n",
      " 0.29362416 0.31040268 0.32214765 0.30704698 0.32885906 0.23993289\n",
      " 0.26677852 0.29194631 0.2533557  0.29110738 0.31375839 0.34312081\n",
      " 0.36661074 0.34983221 0.37751678 0.41107383 0.38674497 0.35822148\n",
      " 0.34228188 0.29781879 0.29949664 0.33137584 0.34983221 0.2885906\n",
      " 0.30956376 0.36912752 0.36073826 0.32718121 0.34815436 0.36073826\n",
      " 0.39848993 0.38003356 0.40184564 0.42785235 0.41191275 0.41946309\n",
      " 0.39010067 0.42197987 0.41778523 0.39261745 0.36996644 0.4102349\n",
      " 0.41694631 0.40771812 0.39177852 0.38003356 0.35402685 0.36996644\n",
      " 0.33808725 0.27516779 0.31879195 0.31291946 0.32298658 0.32969799\n",
      " 0.3238255  0.34899329 0.31459732 0.3238255  0.33389262 0.31124161\n",
      " 0.32130872 0.3011745  0.20218121 0.18791946 0.12080537 0.14261745\n",
      " 0.11073826 0.12751678 0.10067114 0.11073826 0.14513423 0.10067114\n",
      " 0.12416107 0.10486577 0.09899329 0.11157718 0.14010067 0.1409396\n",
      " 0.10402685 0.14597315 0.14765101 0.1409396  0.125      0.11325503\n",
      " 0.11828859 0.16694631 0.19295302 0.20805369 0.20385906 0.17449664\n",
      " 0.16778523 0.17869128 0.16946309 0.1442953  0.10738255 0.09899329\n",
      " 0.0897651  0.12919463 0.09983221 0.12919463 0.1283557  0.11493289\n",
      " 0.11325503 0.0864094  0.09312081 0.07634228 0.10318792 0.11073826\n",
      " 0.11157718 0.12080537 0.09731544 0.125      0.11493289 0.10318792\n",
      " 0.09228188 0.09563758 0.10486577 0.11996644 0.09060403 0.08557047\n",
      " 0.08808725 0.04865772 0.05704698 0.05704698 0.07298658 0.0704698\n",
      " 0.06291946 0.08892617 0.10822148 0.1090604  0.15436242 0.13171141\n",
      " 0.1442953  0.14177852 0.15520134 0.09395973 0.10067114 0.10989933\n",
      " 0.02768456 0.03104027 0.01510067 0.00503356 0.02097315 0.\n",
      " 0.04530201 0.17449664 0.15687919 0.17533557 0.21057047 0.17114094\n",
      " 0.15184564 0.20637584 0.19463087 0.2114094  0.24748322 0.24077181\n",
      " 0.24077181 0.20637584 0.17869128 0.17449664 0.19211409 0.21392617\n",
      " 0.18540268 0.2147651  0.22986577 0.27097315 0.21224832 0.19295302\n",
      " 0.18456376 0.14765101 0.14513423 0.15687919 0.18204698 0.15016779\n",
      " 0.17030201 0.21812081 0.23154362 0.21895973 0.18204698 0.18540268\n",
      " 0.16191275 0.17114094 0.17869128 0.19630872 0.16862416 0.1795302\n",
      " 0.15184564 0.13255034 0.13926174 0.1057047  0.09815436 0.16442953\n",
      " 0.17869128 0.18120805 0.23154362 0.23489933 0.22818792 0.25503356\n",
      " 0.25167785 0.22063758 0.22483221 0.25587248 0.26845638 0.26510067\n",
      " 0.27348993 0.26006711 0.28691275 0.31375839 0.33724832 0.34647651\n",
      " 0.39010067 0.37416107 0.31879195 0.41778523 0.41442953 0.43959732\n",
      " 0.46560403 0.63674497 0.82466443 0.81040268 0.77265101 0.72734899\n",
      " 0.80704698 0.80956376 0.83557047 0.99496644 1.         0.77516779\n",
      " 0.77600671 0.82550336 0.76174497 0.71560403 0.75251678 0.82130872\n",
      " 0.78775168 0.81543624 0.84395973 0.83557047 0.74328859 0.67701342\n",
      " 0.68204698 0.67030201 0.83389262 0.87583893 0.86912752 0.94966443\n",
      " 0.93624161 0.8783557  0.88674497 0.84815436 0.80369128 0.79110738\n",
      " 0.75167785 0.81040268 0.79865772 0.79194631 0.81040268 0.75083893\n",
      " 0.76426174 0.78355705 0.72651007 0.7340604  0.68624161 0.68791946\n",
      " 0.49496644 0.49580537 0.45553691 0.41442953 0.48657718 0.43624161\n",
      " 0.42281879 0.45805369 0.45218121 0.40268456 0.42197987 0.45218121\n",
      " 0.44463087 0.43708054 0.43875839 0.48573826 0.48238255 0.47902685\n",
      " 0.45050336 0.44379195 0.4488255  0.44379195 0.46057047 0.43875839\n",
      " 0.43959732 0.52432886 0.50083893 0.51761745 0.48825503 0.49412752\n",
      " 0.50419463 0.56291946 0.68875839 0.74077181 0.73489933 0.72483221\n",
      " 0.70889262 0.76174497 0.75251678 0.80033557 0.78104027 0.72063758\n",
      " 0.73489933 0.72986577 0.6988255  0.70385906 0.70134228 0.69966443\n",
      " 0.71560403 0.74244966 0.72063758 0.69211409 0.66107383 0.69966443\n",
      " 0.66778523 0.67365772 0.70637584 0.71728188 0.71728188 0.6988255\n",
      " 0.71895973 0.70385906 0.67785235 0.57634228 0.51174497 0.50419463\n",
      " 0.47483221 0.50922819 0.49916107 0.54530201 0.52265101 0.52936242\n",
      " 0.53355705 0.54446309 0.6954698  0.66442953 0.65436242 0.6602349\n",
      " 0.65436242 0.61912752 0.66526846 0.63590604 0.6216443  0.62751678\n",
      " 0.66526846 0.67114094 0.71224832 0.75419463 0.78104027 0.79530201\n",
      " 0.7852349  0.8011745  0.82802013 0.79194631 0.72902685 0.72063758\n",
      " 0.7340604  0.71308725 0.68204698 0.68120805 0.67281879 0.66107383\n",
      " 0.68875839 0.6409396  0.6283557 ]\n"
     ]
    }
   ],
   "execution_count": 38
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.515548Z",
     "start_time": "2025-06-30T13:30:33.511317Z"
    }
   },
   "cell_type": "code",
   "source": [
    "for input_seq, target_seq in train_dataloader:\n",
    "    print(input_seq)\n",
    "    print(target_seq)\n",
    "    break"
   ],
   "id": "99cb25c74d473da8",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0.3020, 0.3163, 0.3213]])\n",
      "tensor([0.3389])\n"
     ]
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:33.541758Z",
     "start_time": "2025-06-30T13:30:33.537918Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torch import nn\n",
    "\n",
    "\n",
    "# 大都督周瑜（我的微信: dadudu6789）\n",
    "class ZhouyuNet(nn.Module):\n",
    "    def __init__(self, hidden_size: int):\n",
    "        super().__init__()\n",
    "        self.hidden_size = hidden_size\n",
    "\n",
    "        # 输入给RNN的某天的股价\n",
    "        self.rnn = nn.RNN(input_size=1, hidden_size=hidden_size, num_layers=1, batch_first=True, nonlinearity='tanh')\n",
    "        self.out_linear = nn.Linear(hidden_size, 1)  # 输出后一天的股价\n",
    "\n",
    "    def forward(self, x, hidden=None):\n",
    "        batch_size, seq_len, input_size = x.shape  # x是一个seq，SEQ_LENGTH天的股价\n",
    "\n",
    "        # 初始化隐藏状态，每个seq都创建一个初始隐藏状态\n",
    "        # 3表示num_layers\n",
    "        if hidden is None:\n",
    "            hidden = torch.zeros(1, batch_size, self.hidden_size)\n",
    "\n",
    "        outputs, hidden = self.rnn(x, hidden)  # outputs的形状为(batch_size, seq_len, hidden_size)\n",
    "\n",
    "        out = outputs[:, -1, :]  # 只取最后一个时间步的输出\n",
    "        out = self.out_linear(out)  # 降维\n",
    "        return out, hidden\n",
    "\n",
    "\n",
    "# 初始化模型\n",
    "model = ZhouyuNet(HIDDEN_SIZE)\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.001)"
   ],
   "id": "d7bc18eb9cfc976f",
   "outputs": [],
   "execution_count": 40
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:45.094837Z",
     "start_time": "2025-06-30T13:30:33.561261Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torch.utils.tensorboard import SummaryWriter\n",
    "\n",
    "# 开始训练\n",
    "writer = SummaryWriter()\n",
    "\n",
    "for epoch in range(100):\n",
    "    for i, (inputs, targets) in enumerate(train_dataloader):\n",
    "        inputs = inputs.view(inputs.size(0), inputs.size(1), 1)\n",
    "        outputs, _ = model(inputs)\n",
    "        loss = criterion(outputs.view(-1), targets)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        if (i + 1) % 100 == 0:\n",
    "            print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'\n",
    "                  .format(epoch + 1, 100, i + 1, len(train_dataloader), loss.item()))\n",
    "\n",
    "            global_step = epoch * len(train_dataloader) + i\n",
    "            writer.add_scalar('training loss', loss, global_step)"
   ],
   "id": "b3ab92e81e89a1b1",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [1/100], Step [100/414], Loss: 0.0137\n",
      "Epoch [1/100], Step [200/414], Loss: 0.0067\n",
      "Epoch [1/100], Step [300/414], Loss: 0.1815\n",
      "Epoch [1/100], Step [400/414], Loss: 0.0606\n",
      "Epoch [2/100], Step [100/414], Loss: 0.0113\n",
      "Epoch [2/100], Step [200/414], Loss: 0.0002\n",
      "Epoch [2/100], Step [300/414], Loss: 0.1257\n",
      "Epoch [2/100], Step [400/414], Loss: 0.0449\n",
      "Epoch [3/100], Step [100/414], Loss: 0.0117\n",
      "Epoch [3/100], Step [200/414], Loss: 0.0002\n",
      "Epoch [3/100], Step [300/414], Loss: 0.1123\n",
      "Epoch [3/100], Step [400/414], Loss: 0.0396\n",
      "Epoch [4/100], Step [100/414], Loss: 0.0106\n",
      "Epoch [4/100], Step [200/414], Loss: 0.0001\n",
      "Epoch [4/100], Step [300/414], Loss: 0.1005\n",
      "Epoch [4/100], Step [400/414], Loss: 0.0347\n",
      "Epoch [5/100], Step [100/414], Loss: 0.0095\n",
      "Epoch [5/100], Step [200/414], Loss: 0.0000\n",
      "Epoch [5/100], Step [300/414], Loss: 0.0892\n",
      "Epoch [5/100], Step [400/414], Loss: 0.0302\n",
      "Epoch [6/100], Step [100/414], Loss: 0.0085\n",
      "Epoch [6/100], Step [200/414], Loss: 0.0000\n",
      "Epoch [6/100], Step [300/414], Loss: 0.0785\n",
      "Epoch [6/100], Step [400/414], Loss: 0.0260\n",
      "Epoch [7/100], Step [100/414], Loss: 0.0075\n",
      "Epoch [7/100], Step [200/414], Loss: 0.0000\n",
      "Epoch [7/100], Step [300/414], Loss: 0.0684\n",
      "Epoch [7/100], Step [400/414], Loss: 0.0222\n",
      "Epoch [8/100], Step [100/414], Loss: 0.0065\n",
      "Epoch [8/100], Step [200/414], Loss: 0.0001\n",
      "Epoch [8/100], Step [300/414], Loss: 0.0590\n",
      "Epoch [8/100], Step [400/414], Loss: 0.0187\n",
      "Epoch [9/100], Step [100/414], Loss: 0.0056\n",
      "Epoch [9/100], Step [200/414], Loss: 0.0002\n",
      "Epoch [9/100], Step [300/414], Loss: 0.0504\n",
      "Epoch [9/100], Step [400/414], Loss: 0.0156\n",
      "Epoch [10/100], Step [100/414], Loss: 0.0048\n",
      "Epoch [10/100], Step [200/414], Loss: 0.0004\n",
      "Epoch [10/100], Step [300/414], Loss: 0.0425\n",
      "Epoch [10/100], Step [400/414], Loss: 0.0129\n",
      "Epoch [11/100], Step [100/414], Loss: 0.0040\n",
      "Epoch [11/100], Step [200/414], Loss: 0.0006\n",
      "Epoch [11/100], Step [300/414], Loss: 0.0355\n",
      "Epoch [11/100], Step [400/414], Loss: 0.0105\n",
      "Epoch [12/100], Step [100/414], Loss: 0.0033\n",
      "Epoch [12/100], Step [200/414], Loss: 0.0008\n",
      "Epoch [12/100], Step [300/414], Loss: 0.0294\n",
      "Epoch [12/100], Step [400/414], Loss: 0.0086\n",
      "Epoch [13/100], Step [100/414], Loss: 0.0027\n",
      "Epoch [13/100], Step [200/414], Loss: 0.0010\n",
      "Epoch [13/100], Step [300/414], Loss: 0.0242\n",
      "Epoch [13/100], Step [400/414], Loss: 0.0069\n",
      "Epoch [14/100], Step [100/414], Loss: 0.0022\n",
      "Epoch [14/100], Step [200/414], Loss: 0.0012\n",
      "Epoch [14/100], Step [300/414], Loss: 0.0197\n",
      "Epoch [14/100], Step [400/414], Loss: 0.0056\n",
      "Epoch [15/100], Step [100/414], Loss: 0.0018\n",
      "Epoch [15/100], Step [200/414], Loss: 0.0014\n",
      "Epoch [15/100], Step [300/414], Loss: 0.0160\n",
      "Epoch [15/100], Step [400/414], Loss: 0.0044\n",
      "Epoch [16/100], Step [100/414], Loss: 0.0014\n",
      "Epoch [16/100], Step [200/414], Loss: 0.0015\n",
      "Epoch [16/100], Step [300/414], Loss: 0.0130\n",
      "Epoch [16/100], Step [400/414], Loss: 0.0036\n",
      "Epoch [17/100], Step [100/414], Loss: 0.0011\n",
      "Epoch [17/100], Step [200/414], Loss: 0.0016\n",
      "Epoch [17/100], Step [300/414], Loss: 0.0105\n",
      "Epoch [17/100], Step [400/414], Loss: 0.0028\n",
      "Epoch [18/100], Step [100/414], Loss: 0.0009\n",
      "Epoch [18/100], Step [200/414], Loss: 0.0017\n",
      "Epoch [18/100], Step [300/414], Loss: 0.0085\n",
      "Epoch [18/100], Step [400/414], Loss: 0.0023\n",
      "Epoch [19/100], Step [100/414], Loss: 0.0007\n",
      "Epoch [19/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [19/100], Step [300/414], Loss: 0.0068\n",
      "Epoch [19/100], Step [400/414], Loss: 0.0018\n",
      "Epoch [20/100], Step [100/414], Loss: 0.0005\n",
      "Epoch [20/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [20/100], Step [300/414], Loss: 0.0056\n",
      "Epoch [20/100], Step [400/414], Loss: 0.0014\n",
      "Epoch [21/100], Step [100/414], Loss: 0.0004\n",
      "Epoch [21/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [21/100], Step [300/414], Loss: 0.0046\n",
      "Epoch [21/100], Step [400/414], Loss: 0.0012\n",
      "Epoch [22/100], Step [100/414], Loss: 0.0003\n",
      "Epoch [22/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [22/100], Step [300/414], Loss: 0.0037\n",
      "Epoch [22/100], Step [400/414], Loss: 0.0009\n",
      "Epoch [23/100], Step [100/414], Loss: 0.0003\n",
      "Epoch [23/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [23/100], Step [300/414], Loss: 0.0031\n",
      "Epoch [23/100], Step [400/414], Loss: 0.0008\n",
      "Epoch [24/100], Step [100/414], Loss: 0.0002\n",
      "Epoch [24/100], Step [200/414], Loss: 0.0020\n",
      "Epoch [24/100], Step [300/414], Loss: 0.0026\n",
      "Epoch [24/100], Step [400/414], Loss: 0.0006\n",
      "Epoch [25/100], Step [100/414], Loss: 0.0002\n",
      "Epoch [25/100], Step [200/414], Loss: 0.0020\n",
      "Epoch [25/100], Step [300/414], Loss: 0.0022\n",
      "Epoch [25/100], Step [400/414], Loss: 0.0005\n",
      "Epoch [26/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [26/100], Step [200/414], Loss: 0.0020\n",
      "Epoch [26/100], Step [300/414], Loss: 0.0019\n",
      "Epoch [26/100], Step [400/414], Loss: 0.0004\n",
      "Epoch [27/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [27/100], Step [200/414], Loss: 0.0020\n",
      "Epoch [27/100], Step [300/414], Loss: 0.0016\n",
      "Epoch [27/100], Step [400/414], Loss: 0.0004\n",
      "Epoch [28/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [28/100], Step [200/414], Loss: 0.0020\n",
      "Epoch [28/100], Step [300/414], Loss: 0.0014\n",
      "Epoch [28/100], Step [400/414], Loss: 0.0003\n",
      "Epoch [29/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [29/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [29/100], Step [300/414], Loss: 0.0013\n",
      "Epoch [29/100], Step [400/414], Loss: 0.0003\n",
      "Epoch [30/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [30/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [30/100], Step [300/414], Loss: 0.0011\n",
      "Epoch [30/100], Step [400/414], Loss: 0.0002\n",
      "Epoch [31/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [31/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [31/100], Step [300/414], Loss: 0.0010\n",
      "Epoch [31/100], Step [400/414], Loss: 0.0002\n",
      "Epoch [32/100], Step [100/414], Loss: 0.0001\n",
      "Epoch [32/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [32/100], Step [300/414], Loss: 0.0009\n",
      "Epoch [32/100], Step [400/414], Loss: 0.0002\n",
      "Epoch [33/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [33/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [33/100], Step [300/414], Loss: 0.0008\n",
      "Epoch [33/100], Step [400/414], Loss: 0.0002\n",
      "Epoch [34/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [34/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [34/100], Step [300/414], Loss: 0.0008\n",
      "Epoch [34/100], Step [400/414], Loss: 0.0002\n",
      "Epoch [35/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [35/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [35/100], Step [300/414], Loss: 0.0007\n",
      "Epoch [35/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [36/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [36/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [36/100], Step [300/414], Loss: 0.0007\n",
      "Epoch [36/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [37/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [37/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [37/100], Step [300/414], Loss: 0.0007\n",
      "Epoch [37/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [38/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [38/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [38/100], Step [300/414], Loss: 0.0006\n",
      "Epoch [38/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [39/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [39/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [39/100], Step [300/414], Loss: 0.0006\n",
      "Epoch [39/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [40/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [40/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [40/100], Step [300/414], Loss: 0.0006\n",
      "Epoch [40/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [41/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [41/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [41/100], Step [300/414], Loss: 0.0006\n",
      "Epoch [41/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [42/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [42/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [42/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [42/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [43/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [43/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [43/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [43/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [44/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [44/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [44/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [44/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [45/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [45/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [45/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [45/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [46/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [46/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [46/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [46/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [47/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [47/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [47/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [47/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [48/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [48/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [48/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [48/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [49/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [49/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [49/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [49/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [50/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [50/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [50/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [50/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [51/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [51/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [51/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [51/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [52/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [52/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [52/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [52/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [53/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [53/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [53/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [53/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [54/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [54/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [54/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [54/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [55/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [55/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [55/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [55/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [56/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [56/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [56/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [56/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [57/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [57/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [57/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [57/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [58/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [58/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [58/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [58/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [59/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [59/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [59/100], Step [300/414], Loss: 0.0005\n",
      "Epoch [59/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [60/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [60/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [60/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [60/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [61/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [61/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [61/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [61/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [62/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [62/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [62/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [62/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [63/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [63/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [63/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [63/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [64/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [64/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [64/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [64/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [65/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [65/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [65/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [65/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [66/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [66/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [66/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [66/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [67/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [67/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [67/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [67/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [68/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [68/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [68/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [68/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [69/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [69/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [69/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [69/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [70/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [70/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [70/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [70/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [71/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [71/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [71/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [71/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [72/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [72/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [72/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [72/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [73/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [73/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [73/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [73/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [74/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [74/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [74/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [74/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [75/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [75/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [75/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [75/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [76/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [76/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [76/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [76/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [77/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [77/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [77/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [77/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [78/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [78/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [78/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [78/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [79/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [79/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [79/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [79/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [80/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [80/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [80/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [80/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [81/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [81/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [81/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [81/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [82/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [82/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [82/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [82/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [83/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [83/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [83/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [83/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [84/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [84/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [84/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [84/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [85/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [85/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [85/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [85/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [86/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [86/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [86/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [86/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [87/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [87/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [87/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [87/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [88/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [88/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [88/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [88/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [89/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [89/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [89/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [89/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [90/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [90/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [90/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [90/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [91/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [91/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [91/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [91/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [92/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [92/100], Step [200/414], Loss: 0.0019\n",
      "Epoch [92/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [92/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [93/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [93/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [93/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [93/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [94/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [94/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [94/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [94/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [95/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [95/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [95/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [95/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [96/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [96/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [96/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [96/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [97/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [97/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [97/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [97/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [98/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [98/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [98/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [98/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [99/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [99/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [99/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [99/100], Step [400/414], Loss: 0.0001\n",
      "Epoch [100/100], Step [100/414], Loss: 0.0000\n",
      "Epoch [100/100], Step [200/414], Loss: 0.0018\n",
      "Epoch [100/100], Step [300/414], Loss: 0.0004\n",
      "Epoch [100/100], Step [400/414], Loss: 0.0001\n"
     ]
    }
   ],
   "execution_count": 41
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:45.120044Z",
     "start_time": "2025-06-30T13:30:45.116814Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 手动预测\n",
    "pred_normalized = model(train_dataset[0][0].view(1, -1, 1))[0]\n",
    "pred = pred_normalized * (train_data.values.max() - train_data.values.min()) + train_data.values.min()\n",
    "# pred = pred_normalized * (train_dataset.targets_max - train_dataset.targets_min) + train_dataset.targets_min\n",
    "# pred = pred_normalized\n",
    "print(pred)"
   ],
   "id": "281d1e1df85924f5",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[18.8012]], grad_fn=<AddBackward0>)\n"
     ]
    }
   ],
   "execution_count": 42
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:45.214274Z",
     "start_time": "2025-06-30T13:30:45.139346Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 画出预测结果和真实结果的曲线\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "model.eval()\n",
    "\n",
    "train_pred_result = []\n",
    "with torch.no_grad():\n",
    "    for inputs, targets in train_dataset:\n",
    "        train_pred = model(inputs.view(1, -1, 1))\n",
    "        pred_normalized = train_pred[0][0][0]\n",
    "        pred = pred_normalized * (train_data.values.max() - train_data.values.min()) + train_data.values.min()\n",
    "        # pred = pred_normalized * (train_dataset.targets_max - train_dataset.targets_min) + train_dataset.targets_min\n",
    "        # pred = pred_normalized\n",
    "        train_pred_result.append(pred)\n",
    "\n",
    "train_pred_result = [train_pred_result[0]] * SEQ_LENGTH + train_pred_result\n",
    "\n",
    "print(len(train_pred_result))\n",
    "print(len(train_data.values))\n",
    "\n",
    "x_plot = [i for i in range(len(train_pred_result))]\n",
    "\n",
    "plt.plot(x_plot, train_data.values, label='real')\n",
    "plt.plot(x_plot, train_pred_result, label='pred')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "af1aa0c9ae3860d8",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "417\n",
      "417\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnTxJREFUeJztnQd4G/X9xt/TtLz3trP3nowwwkqgbGihQClQWjrYUP6FDjpoCy3dlAItu8wCZZZNBoQMMsjeiRM7dry3ZM27//P7/e5Oki3HW/P7eR7lpLuzfJJi3Xvf8X4lRVEUEARBEARBhAlDuH4RQRAEQRAEg8QHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhxYQoQ5Zl1NTUIC0tDZIkRfpwCIIgCILoB8yztKOjA8XFxTAYDLElPpjwKCsri/RhEARBEAQxCKqqqlBaWhpb4oNFPLSDT09Pj/ThEARBEATRD9rb23nwQDuPx5T40FItTHiQ+CAIgiCI2KI/JRNUcEoQBEEQRFgh8UEQBEEQRFgh8UEQBEEQRFiJupoPgiAIghjpllCv1wufzxfpQ4k5jEYjTCbTkK0wSHwQBEEQCYPb7cbRo0fhcDgifSgxS3JyMoqKimCxWAb9HCQ+CIIgiISAmVhWVFTwq3dmhMVOnmRmObCIERNvDQ0N/H2cMGFCn2ZivUHigyAIgkgI2ImTCRDmRcGu3omBY7PZYDabcfjwYf5+JiUlDeJZqOCUIAiCSDAGe7VODN/7R58AQRAEQRBhhcQHQRAEQRBhhcQHQRAEQSQYhw4d4sW2mzdvjsjvJ/FBEARBEERYIfFBEAQRJXywoxYf7qiN9GEQUY7b7UasQ+KDIAgiCli1rxHf/fdG3PDvjXB6yHkzXL4VDrc3IjdFUfp9nIsXL8ZNN92E2267Dbm5uVi6dCm2b9+Oc845B6mpqSgoKMDVV1+NxsZG/Wfef/99nHTSScjMzEROTg7OO+88HDhwANEC+XwQBEFEGJ+s4O7/btUfu7wykszGiB5TItDl8WHqvR9E5Hfv/NVSJFv6fwp+5pln8P3vfx+ff/45Wltbcfrpp+Pb3/42/vznP6Orqws/+tGPcNlll2HZsmV8f7vdjjvuuAMzZ85EZ2cn7r33Xlx88cW8xiMaWo1JfBAEQUSYo21dONLSFSRGCCIQ5ib6+9//nt//9a9/jTlz5uC3v/2tvv3JJ5/k5ml79+7FxIkTcemllwb9PNuel5eHnTt3Yvr06Yg0JD4IgiAijMcXLDa8shyxY0kkbGYjj0BE6ncPhHnz5un3t2zZguXLl/OUS3dYaoWJj3379vFox7p163g6hjm7MiorK0l8EARBEIDXFyw2KPIRHlir6UBSH5EkJSVFv8/SKOeffz5+97vf9diPDXxjsO2jRo3Cv/71Lz7HhokPJjqipVg1Nt51giCIBIp8kPggjsXcuXPx2muvYfTo0Xy8fXeampqwZ88eLjxOPvlkvm7VqlWIJiJfdUIQBJHgeCjyQQyAG2+8Ec3Nzbjiiiuwfv16nmr54IMPcN1118Hn8yErK4t3uPzzn//E/v37eREqKz6NJkh8EARBRJjuNR5eEh/EMWBpFNb1woTGkiVLMGPGDN6Gy9pqWScLu7300kvYuHEjT7XcfvvtePDBBxFNUNqFIAgiytIuMokPIoAVK1YgVPfLf//7X/TGmWeeyTtbAgn0FmEpm4F4jQw3FPkgCIKIMN4e3S4kPoj4hsQHQRBEhPF0S7tQzQcR75D4IAiCiLLIB4kPIt4h8UEQBBFl3S6UdiHiHRIfBEEQEYZabYlEg8QHQRBEhKG0C5FokPggCIKIMp8PEh9EvEPigyAIIk4HyzV1unDfOzuxu7Z9WJ6PIIYLEh8EQRBRVPOx1LAexXueGZbnfWjZfjyxqgJn/+WzYXk+Iv4ZPXo0/vKXv0SX+Lj//vuxYMECpKWlIT8/HxdddBEfXtOdNWvW4PTTT+dT+NLT03HKKaegq6trOI+bIAgiLms+HrP8GRM3/Rqo3T7k561u9X/vUiqHiCYGJD5WrlzJB9qsXbsWH330ETweD/eVt9vtQcLj7LPP5uu/+OILPvTmpptu4l7zBEEQRO8mYwYEpFvs9UN+3jG5/jHse2o7hvx8RGzgdrsR7QxIEbz//vu49tprMW3aNMyaNQtPP/00Kisr+fAaDTbA5pZbbsHdd9/N95s0aRIuu+wyWK3WkTh+giCIuIl8pCIgQiwN/YLN7fWLmfWHmof8fERkWLx4Mb+IZ7eMjAzk5ubiZz/7mT6bhaVK7rvvPnzzm9/k2YYbbriBr1+1ahVOPvlk2Gw2lJWV8XNzYLCgvr4e559/Pt8+ZswYPP/882F7TUP6393W1saX2dnZ+gtZt24dT8mceOKJKCgowKmnnsrfgN5wuVxob28PuhEEQSQSXrXmIwVO/0qfd8jP6/T49PtfkPjoCTt5u+2RuSkDS4M988wzMJlMPKPw17/+FX/605/w+OOP69v/8Ic/8KDAl19+yYXJgQMHeBbi0ksvxdatW/Hyyy/zczETMBosmFBVVYXly5fj1VdfxT/+8Q9+Ho/qqbayLPMRvosWLeIjexkHDx7ky1/84hf8jZg9ezaeffZZnHHGGdi+fTufwheqjuSXv/zlUF4DQRBETOPWIh9SQOTD3Tnk5+0KEB91bQHChhB4HMBviyPzu39cA1j8abG+YJGLP//5z5AkiWcUtm3bxh9/5zvf4dtZneWdd96p7//tb38bV111FT9PM9j5929/+xsPCDzyyCM8a/Hee+9xMcNqORlPPPEEpkyZgqiOfLDaDyYoXnrppSBBwvjud7+L6667DnPmzOFvDnujnnzyyZDPc8899/AIinZjKowgCCIRIx9pcPhXsqvjIeJw+8VHp2vokRQichx//PFceGiccMIJ2LdvH3w+8RnPnz8/aP8tW7bw0ojU1FT9tnTpUn6erqiowK5du3gkZd68efrPTJ48GZmZmdEb+WBhm3feeQeffvopSktL9fVFRUV8OXXq1KD9mZJiKisUrBaE6kEIgkhktFkuKZJzWMVHYNqlw0niowfmZBGBiNTvHkZYd2kgnZ2dPBDA6jy6U15ejr179yKSDEh8sOKWm2++Ga+//jpWrFjBC1QCYUUvxcXFPdpv2Ys855xzhueICYIg4tTnI6jgdDjSLgGRjw6nZ8jPF3ewSMIAUh+RZN26dUGPWdcpS6UYjcaQ+8+dOxc7d+7E+PHjQ25nUQ6v18sbRrS0Czt3t7a2IurSLizV8txzz+GFF17gXh+1tbX8pnl4sJDQXXfdxfNKrHhl//79vPBl9+7duP7660fqNRAEQcRHt0tgzQerRxjGmg+WdtG6I4jYo7KyEnfccQcXCC+++CIeeugh3Hrrrb3u/6Mf/QirV6/mmYrNmzfzFM2bb76pF5yycghWkMqiI0zYMBHC6kRY50vURT5YkYrW9hPIU089xatmGay4xel08pbb5uZmXn3LPEHGjRs3nMdNEAQR55EP+7BGPlhmh4mRZMug+wyICPLNb36TX+gvXLiQRzuY8NBaakMxc+ZM7s31k5/8hLfbMuHJzsOXX3550LmbCQ5WhMq6U3/961/zgEFUpl36A/P4YDeCIAiibzxqzcewp10CIh+MTqeXxEeMYjabue25FgQI5NChQyF/hqVTPvzww16fs7CwkNdvBnL11VcjHJDtKEEQRLT4fAxzwWmg+LDAg/YuqvsgogMSHwRBEFEy1TZthNIuJWjAJut3kfXx7UN+ToIYDij+RhAEEWG8qkdSumH4Ih+yrMCl2quflbIPqT4nkg5/IJw1A/wiiOhnxYoViDco8kEQBBElBafB4qNz2FIuU8x1fGlytwNtR4b0vAQxHJD4IAiCiJa0S5C9un3YxMc4KcBIq277kJ6XIIYDEh8EQRBRUnCaOowFp1q9R5LZgBJfQLSDxAf5nUTB+0figyAIIkrs1Yez1VazVk81AXmegMhH7faEbldlOBxDN3BLZBzq+6e9n4OBCk4JgiCiJO2SrHRLuwyhOFQbKjfW3AyTO6DFNoEjH8yciw1O08bGJycnBw1rI/qOeDDhwd4/9j72Zu3eH0h8EARBREnBabIScEUuewGfGzBZh1TzMd54lC/rlEwUSK1Qmg5AYsImRmaaDDfMWIuhCRBi4DDhob2Pg4XEB0EQRBTUfJjghQXu4A1MJAxRfBQbmvlyqzwOsw37kSe1AfW7gNLgEeyJAot0sAns+fn58HjIdG2gsFTLUCIeGiQ+CIIgoiDtkgyX/liGBAMUUfeRnD2o53SqaZdcqZ0vG5R07JLLkWfcBqV2G6QEFR8a7AQ6HCdRYnBQwSlBEEQUmIzZVPHhVQzoMqaJDe7BF0ZqNR85EOKjCRnYqYwST1u9degHTRBDgCIfBEEQEcbrU5AuCfHhgBVeyYYUJhoG2fGy/lAz7nxlC7+fpbTxZZOSjhYlld+XE7jjhYgOKPJBEAQRYdw+WU+7dMEKl8E2JK+PX769Q7+fobTy5dVnzMch0xh+39y4S3TSEESEIPFBEAQRBZGPJE18KFa4JLXI1BPQejsA3OpMF4bF2cSX40aPhrVgInyKBJOnA+gUlusEEQlIfBAEQURBzUeyFBD5kJLEBs/gIh82s7+QMs8gaj6Qkof01FQcUfLE46YDQz1sghg0JD4IgiAibNwU2O3Caj70yMcgC05bHKKF9Mr5RUj2tuniIyfFgkOK6s/QTOKDiBwkPgiCICKIT7VW17pdHIoVTj3yMUjxYRd+Id+dn6mukXjLbk6qBRWa+KDIBxFBqNuFIAgiCqzVbWraxQkrWAXIYAtOWb1Hh8sb1OmC5BzAYER2YOSjaf/wvACCGAQU+SAIgoggHlm1Vg9Iuzj1gtOBRz5au0TUwyABKb5WPeXCEJGPIrGu+eBwHD5BDAqKfBAEQUS406V72gVa5GMQ3S4tdlHvkZlsgdHRKFam5PJFTorVn3Zh4oMJHwNdgxLhh/7XEQRBRHiuCyMloNuF3QabdmlW6z0yk82AvSEo8sHSLtVKLnzsq9/rBOw0XI2IDCQ+CIIgIohHLThNNgjR0AWLX3wcI+3CRIs2DTeQVod4nuxkSw/xwdIuPhjRoGSI9e01w/tiCKKfkPggCIKIIB5vcOTDoST1GflgAmPBbz7Gd57d0GNbsyo+slJ6io8sJkgA1CpZYn3H0eF+OQTRL0h8EARBRNhgjJEiaZEPq1r30Xvk48vKVu7lsWJPA7ZXqx0t3dpss3jaJbjmI8lsRJLZgDpFnZRLkQ8iQpD4IAiCiIJWWz3ywcSHnnYJXXDa0CH2ZfxnQ1VIg7FQkQ9Gps0SEPmoHc6XQhD9hsQHQRBEBNHmsNigRj4Uiz/y0UvapbrVL0re2Xo0ZOQjVM2HVohaR2kXIsKQ+CAIgoggde1Ovkwz+tMudsVyzLTL0bauoO4WWS1aZbQ7ReQj3dYz7aLVfVDahYg0JD4IgiAiiBbFSFW7XRxIgl2PfPQmPoRg0XAFTLHV0jhJitM/mK5b5KMWFPmIl7lA9765HY+tjD2rfBIfBEEQYWDbkTbc985O2FXrc40jLV3BPh+KBV2yiHx0dLahsdNf3xEq7cJwenw9C1i9qrup0QpY0/TtzHyM0i7xweaqVjy75jDuf293UPQrFiDxQRAEEQau+NdaPLGqAj95fVvQ+iMtIrphVfwmYx1q5MMiu/DICnFVy0TLM6sPoaa1C0dbtciHgrtML8G84lc9Ih/JnhZ/1EOSutV8qGkXZ9ugJ+cSkaexU0TLGG1dIt0WK5D4IAiCCAOdasTjjc01IaMYFlksWaeLXY18WCUv3G4hSh78YA9+/tYOnPWnlehSIx1TjDW40fQWUtc/pNd3aMZjyZ7mHvUeWgtuBzNz1ybnUvQjZqnv8KffQkXIohkSHwRBEBFEpF0UGH2q+FCS0KnVfATMfPl0r+hcsbuF8MhNteAr1s3+J1I7W/RZMbr48Nd7aK22gIRGU75Y0RbcqkvEDtVqyo7RQOKDIAiC6M7UovQe3SodTg9aHR5Y4YGkiIiFExbYfQZ4FfH1bGWFoyySYTUGPV9Rhg2nKht7iA8t8pHkagotPpj5GOuygbq+7cjwvlAibNQE1P4EpmBiARIfBEEQYcBi8n/dbjzcElRsWmDzd6twkzG3rBuNaZGPFEvwEPJxqW5MV/b0jHyohYcWT7tYn6zWdwQUnDKq1bqP7bt24PLH1vCwPSuK/eojq7HhkBo1IaKa6kDxEWA8FwuQ+CAIgggDvoBuhP31nTzqccuLX/LHU3PEV7FiMMMLITKcqvhQ1ILQVGuw+JhrPgwDAjoc1JoPbUquWU3jwJIS9HPcdh3AYW8OX+7YuRPrKprx8zd34PJ/rsGGwy343nMBERUiJtIujZR2IQiCILoTOIGWGYN9tLMO++o7kZNiwV3HC4EgpxXp+2gupz6X8OowGvwdK4xJysHgX6CnXYQgMXkdIcVHhio+KjyZfFkiiZ/7eFcdHGo9SayF8BP1/1OtalDHIPFBEARB9EBLhzCaOt1698txY7MxziSiFr6MUfo+2mRb2dUpHgd4eTBKnXv5Urdi19MuQuQYfaHFB3M4ZULmiCxqPoqlph5GZaVZNsQ6bPLvy+sr9fc53qhtc0L7L5WCLnS2q63VMQKJD4IgiDCnXdhVqhZlsJlNQMshfl/JGqPv06wIY7BUpxj+1t2cLKd9N1+ulGd2S7tokQ/V3dSSGvRzZqMBM0oyUA2Rdinh4iPYoKogXW3DjWF+/Po2/Og1dtuKeORgo/h8WaLuQ+v/4YGqq4H6XYgVSHwQBEGEOe3SZHejSxMfFoMuPpA1Wt9nkzKBL8c5tvClJlYYacyEvUP8zKe6+AjudjF4Qkc+GCeOy+FGYzIkWCUPcqAWp6q4vMFRlljk3W1CtP2v2+C9eIjo3Pj8Jjy8fD9/fGpmPReQ6Uo78NxXAW9spF9IfBAEQYQ58tHU6dIt0W1mY0jxsU6ewpfT3FvZEA/Y3f7Ix0KjSLk0mwuxTy4J2e1i9IYuOGWcMC4HHpjQoGh1H+oAOo6CQvtewBM8PyaWu4viib98vA//23YUX1SIjqSL8oTI4rQfAZqEKIl24vPTIQiCiDK0QlBGi8ODdqcQEzbWQquKDynbLz42yhPgUYzIVxqB1sNwuPzRiPOSRDRkb9rxaEZ6yLSLQUu7mHuKj/mjsmE2SjiiCPfTcmMzThgr0jA/Nz2Lx513AJ/4LdtjkYJ0a8jZN7HOntqOoMfzTN0KjzvrEQuQ+CAIgggDWiEoQ4KM3KMrePokjU2z7azj643ZY/V9upCErYr6+OCKgMiHglOUDfzegeyT0Kio4sPVzkPuHvX3GLSJtiEiHzaLkdd11ChCcIwxN+PJK6fivbGv4TrTB2Kn7a8ilrEY/ae3gw3qexEHU2z31QeLj/yOncE7kfggCIIgNHwBkY+fmp7HnQ0/xe2mV5HnVWsSkjJgSBZpEI1lvjl8qex8C06PEBXn5zciR24CzMk4mr0Q7UiBTxIeIL6Oepah4UjHqPlgsBbfajXyUWZshu2z32BKzWv6dsXVieueXIfn1x1GLNLW5U9TdT9hxyqVzY6gNuhMdMDYKIzmVvmmiZV2Eh8EQRCEihaRSLVIuN70Hr//LdP7yHOr9ubZ4yBJUpCfx7vyceJOxUpkQLTc/ul4tRZj1IkwW5J5HKXLIDpavI5WPbLiFx/B3S4a2SkWPfJRLtUBW//D79/p/h5P90geO3bv3YOfvL4dsRghaOvyn6T31sWH+NioOuOybqUfLB6H92at4pGwvdJo7FLUNm01ihZX4uP+++/HggULkJaWhvz8fFx00UXYsyfA3rfbh3/OOefwP6Y33nhjuI6XIAgipgtOz032t0MekIuQ5VQHu+WM4wuj5BcfFUoRdsnlkGQvzjRs4sLEVCdcUVEyD0lm8RXuNIjohs8pTrI2BJiE9RL5yE6x6pGP+Z5NQFcznwPzvvFkHFYK+PrxhmrEIswTJbDGprYtNjpA+oI54zJmlWXg/2Z2oWjv8/zxv2zXo1HJEDt1isLjuBIfK1euxI033oi1a9fio48+gsfjwZIlS2C398yn/eUvf+HCgyAIItFhF2PayXCR0Z+jT5O6kOFQ0xo548Wy29fmWrXrZZyhBskWI6TqQPEhhs11GYQpmNzVxpcp0DpVJMAc2jAsJ5VFPoT4MEFNUUy9CDZrEvYpooNmvBSb4qOty6PfZxGj8478CahR37c4GCRXnmEG3vgBwIYRTrsE+1LmoUEXH3EY+Xj//fdx7bXXYtq0aZg1axaefvppVFZWYuPG4DkAmzdvxh//+Ec8+eSTw328BEEQMUdAly2yzP5ahBy0Ia3zYJD4OHNKPo9onDO9EBk2M+qVLL4+D63IM7uBRtFmi+K5euTDASEwfE5xZZwsOf1Rj14uAlnapVpNu+jM+CrSkkzYr4qPCar4CGwTjgXYpGCNf1r+hNPa3wBe+w7iZZDcLPcmoH4nYMsGvvIgn/vTiIyglutoJ3hS0QBpaxMqOzvbPzXR4XDgyiuvxMMPP4zCwsI+n8PlcvGbRnt7sNkNQRBEPBmMpZv8J0ajpCC9YVNQ2uUfV82DLCswGCQsfnA5GtzipJIntWG2qQLwKEBGOZCahySzEAd2VXworOMFycgwuI6ZctHEBytW7VSSkMrESnopULoQqdbV2CeX8n2mGUQLcKfTq8+EiaXIRxbacZxBOMGiaR/iZZBciVdN1Y1dDKTkIsV6CJWqZ0tcRj4CkWUZt912GxYtWoTp06fr62+//XaceOKJuPDCC/tdR5KRkaHfysrKBntIBEEQUT/XJcXgFx9BZAvxwWDCg+9r9RuB5UmtGGdQTywFU/nCajIGiw+15oO37/YhPli3C0vLaEWnmH4J+8X8KvoLeZJYJVUgHXZ0uHo55igXHxcZP/evNNm4WVs8DJLL0euERLQs1Wr213w4mgDZF7/ig9V+bN++HS+99JK+7q233sKyZct4vUd/ueeee3gERbtVValvKkEQRBy22SZLISbGpuQDSek9V3Px4Y98sBsnVRSEamkXFr1gKC5VfBj7F/lgvOE7CW1JJcD8b4mnTjKhFjnYLxfzyMz71h/BsFkUNsYClU0OPPV5Bb8/wxLg/skcX2PEAyMUde1ikBzzL0lqrwiKlqVajWhCOmR2Smd1IEyAxKP4uOmmm/DOO+9g+fLlKC0V4TkGEx4HDhxAZmYmTCYTvzEuvfRSLF68OORzWa1WpKenB90IgiDisc2WkRTYiaKRPznkz6UFRD5YfUg+mruJDxH56FDUolJVfKTqkY/Qbbb8+VKEA+g/fBfijVPeBbLFUDsW+WB8LgvfiGKpGcUrfwj4YmM67A9e2Ii1B8X7NMbU7STcGpueJYEpl+LMJEjNB4IiH0ykMuHhMMVO6sUw0IptJjxef/11LjTGjPFPYGTcfffd2Lp1Ky841W6MP//5z3jqqaeG98gJgiBiBK1g02SQYFFEVMKu+O2/MeaUkD/HCk7ZFa0PBh6FKPOqM2BS84PER7sa+YBLFJymBRac9kJ2qoh8MAK9RTTx8Zk2sE5DNbOKdrZX++sGi9Et0tFyOOaLTcew6/MO1ZhOdcRl4oPRZlJTaB0BEZ94KDhlqZYXXngBb775Jvf6qK0VL5DVathsNl5gGqrItLy8vIdQIQiCSLSCU3aSN6vig3lsTNRaWceEjgyzIk92RduspPGUS5nrQDfxIa4f23xCyEhuNfIhqWkXMzMhC02KRQgXhtvrj8z41LqIT+Q5+Jf1GnzL+SwXPqjeBBSoLppRDBN4rMaGGa3leEUEYLVvKk5kLc6tqniL4cjHTJsazWGdLsnZQYKxxZAN3qekiZN4iXw88sgjvC6DpVCKior028svvzxyR0gQBBHjaMPezEYDTD4RlUiXVAdSRrGwUe9Opk1EJ7TUi0Vx+mtEmPhQC07bZRH5kNwi8pGiiY9jpF0CfZgCIx/768RzKDBgfck38S/fuWJDdbClQrTCWoUZ+WiFSfHAqxiwXpkc85GPhk7xmY431QbVewRGPhokNfLRfjS+Ih8s7TJQBvMzBEEQ8YQ+5t4gwaCKj6e8Z+Me84vA2NMAY+iv4gybelLROhk0uqVdWljkw8TmuQjDx5R+pF0YN58+Hh/vqsclc4WvB+M7p4zFF4eacdn8Un7cW2T1JFejtgRHMex8o00Lvny8DBwBaqVcHJJFjYw2PTgWabaLOp4Cre4ns1zfxgpOGfUQnjBxF/kgCIIgBj/Rlo2xlzwifL5cno2zXQ8AX3+h15/LTFYjHwgeONc97aJFPoxq2sUf+Ti2+LhzySS8d+vJSEvye3icNbUAK364GL+5eAbSk8x+8VG3A3AHRGui1FZdq6+5ca54TXWGfN00DQ2q50cMXii3OIT4yJK1ouPCHpGPozKJD4IgCKJb2sVkMAAeEZXoggW7lXKAD4cLjWbsdVTxGznyOg41naJFPrRWW4Ma+UjW7NWPkXY5FqNzU3iKiNUS1LA+G3MeIHujMvWy/lAzNleJgXrt6iRbFmGytAvbhgZjEbeLZ1Ug3P0zRLvtw8v3Y+59H+mzU6KRZrvwLkn3qjUfaQU9xMcRrxohI/FBEARB6GkXVlqhTpt1Kv5uk97ItAnx8bnsN3JEco5umW41GcDKNTSTMaOns5v4OHbko3/1ExIO2maIFZVrEU3YXV587dE1uOjhz3Go0Y52p3qCTjJBqt3K7zdYS+GEFY5UdeprXc8pvQ9+sActDg9+937vkZFI06KmXVLcjT0iH6wlm1GliY8YqPkg8UEQBDHCeNVul2Qjc54UQoSdEPtCS7usVx1HOW1VQUWjKRYTOlTxYfJ2j3z0HlXpD8xwjPEl1ILNyjWIJpo6/Z4pD364Bx2q+MhMMgAVn/H7B1Pm8uU2b5k/fdQLrWpqI9pQFAXN6rFZu+p7jXwccgufLIVFeHzR7UpL4oMgCCJMkY9kzfyLi4/+Rz58MKJdCS0kkq1G2NW0i9HnhBE+2JShpV00tFqQVxuEmaRS9UVUWXdrkQ7G/7YexY4a4fExx3QIcLUBSRloSBNTgVd3iJO1p2Zb0HM43N6QLcfRhMPt04/N5Kjvteaj3pcKL0yQoODQIXVgYZRC4oMgCCJMNR/aXBfW/umB32ejN9JV8cH4mvteKPlTgcuDrc7ZiUdLu/DH6ELScKVd1JMaq01xKWbhIxIQeYk07eoMF41XNhzhy+OwVTdvS0kSEabdioh8tO9bEzTjRRtTz2gMiKREY7FpuskLiQ8PZB9OYQ/PFtYeXau2ZX/yxRZEMyQ+CIIgwtTtkqJGPlySGOrWF4H+G3uUckg/WANMOS9onxSLCW6YIRuEUEmFE0nK8IiPZPWkxozOarSi19aqqIx8MJqqD2C6dBDTPWpqZcypeuporTyFF+bmuCqBve/rP3NENe/SXESdnuiJ7Gi0qMWmE5LVglhTEo/qaJjU4mBGpSw6oca0f4FohsQHQRBEmCIfNkmcRMxWIQp+/JXQM10GQorq8eA1iedMlbqQpHQNi/goy/anepgjKyeqIh8iZTKlKB3fNb6Nldbb8Y71p5jWtUHsUDqfO57yfZGKZ31L+H3l0z/oz1HTqgo1Vk8BN+q2fRJ19RLNauRjjLXTP9snwCSOsXhSHl++5DudL+fX/SeqW6NJfBAEQYQr8qFOtLUkpWDnr5bihlP8LpV90e1co5NiEVe8bqMQGmlwwCqrJ1Tz0MRHcaYNr33/BB6BqVbyojbyMbEgFTdZ3oZZCohaGK1A/jQcbBRFuIwnfedAViRI1Rv0ltvqVnGCzkcL/mv5OUa99TVg3aPH/L2yrOiW+eHsdCkz90y5aFy+QKSV/icfhyo5D+lyG7D+X4hWSHwQBEGEqeBUn2hrtiFZFQ39xcw8QkKgFRs6zMJgKkdqH7bIB2PeqGxML8kIiHxUItpqPrItMtKUbh4dhTMAkwVLpopC06lF6dyWfhfzVmEc+ixoZspdppcxzaDarx9Y3uN3vbm5Gr94awde3XgEP359G+b86iNUNTvC6m5abGoPmmocyKJxuchJsfDi5L/5LubrlJW/Bzqic8LtwP73EwRBEINOuySraReY1Sm0A8Cqupn2lnbpNGWBZfsLpWY+02S4xIfWdaOLj6iKfIi0S4FJOLsGoUYHLplbitw0K+aUZeIbT6zD2rqpQmSwVtzpl+rTYheaD2hd0ADzCGFFqWq4ie1z28ubA+tUOf9YcQD3X6J6oISh4LRAagl6bYEYDBLevvkk1LU7cd2TRmyRP8Ys90Fg8/PAyXcg2qDIB0EQRJgiHzY17XKsabPdeeCSGdxM7JGr5oXcnqJGUNqMoiB0lBTg4DnEVluNDCY+EIU1H2raJV9q151gGxXhdYGJS/mCpYxOm5TPPVMK05OwRp4qth9axf0z9tZ1cl+UMqXG/8TMJ6NNdM4wlu2u14VHmVSHudJefr/ZrtrYhynykaO09Br50NJkc8qzMCY/De/5FvZqqhYNUOSDIAgiTCZjSXD5uxX6ydcXluOr80p5R0MoktW0S5tBtFiWS2qYnXW/mPr2Eumv+Nikp12OsKIHdqmNaCk4zUEbXzLh8X3P7fjtnDacMvsbPfbPT0/CO/IkyDDC0LQPRw/uRFuXB8ebqmCAgjolE53mHIzzHhCD9DJFHcWyXeI9NUDGC+bfoszQgMtdP8Oeo/4W53BEPjJ9zb1GPgIpy0rGniOqqVr9LkQjkf/fQxAEEed4tJoPPe0yMOfR3oRH4ETTZnX43ChNfAxTykUTH7VKNm+5hc8N2HvOR4lk5CNLbtGjP0eUPGQvujakOGKRD9b1sj9ljth/0yt8eVqGsCPfIY/GNnms2LlaTPHtcvuw+oCYp3LXxDouPBgvW+/DW/ar4Pj0oSDfkJGMfKR6mnoYjIWiMCMJe2RVfDTuBbzR519C4oMgCGKE8XWPfAyi5qM3tMLVBmQEp12GUXxkJpu5c2aTuSiqQvlawWm6Kj4WTJuEt25axAtkQ1GQLgzHHm8V4iN575t8Od8qUknbldHY7CoWOzcf4IuDjZ1weWVkJZtxkUEUqWqkSw4kL/spsP01jCStDvE6ba6GHtbqochPs/KBgF2GFDEQsGkfog0SHwRBEBHodhkuNHOpelmccK1adGUYxYfmtLrfrM6YORId02071ILTFI9IR1gzCzGzVESAQlGQLkTfB74FcCtGjPIcxHeM72Bmm+hu2aJMxBE1vVRzeB+2V7ehvkMIxpJ0CwpqPub3n/IuxX99J+EN34niife8O+KRDxO8sLi0tIsqAo8R+WAmdoeNo6I29ULigyAIIkziw6Ko4sM0fOJDcyGt9aUFbxjmtAtju2GiWMF8MqIo8mFzq+mIFOHu2RslmeJ9b0MqnpQu4fd/Yn4BZp8DKJ6DPanH6V09Vns1zntoFRrahfiYkdwIg7sTDsWK+7xX4+HMu3RDLxxe3e/UC/MIqWi082LX/sD2YzUfuWpdCwwmwKa6zfYCSy8x9iilURWpCoTEB0EQRLgLTocx8qH5fNR41S6PYe50CRQfX8qqKdqRDSNe59AXPllBh0tEPqxObcz8scXH+PxU3HL6eN4e+717H0PzOOGHAckILP0tCjKTdfGRI7FZwU7UdwjDtukG4W/izJ6MaxeNwzeOH4Uv5fE8HYWOo0BLRb+O+1fv7MRpf1iBF77on19Kp8sLj0/xt9myTpc+in21CM8GV7n/84oySHwQBEGMMOzkwbCMoPiod1ng4TNjRi7ysclZChgtQFcz0BzZqamdasqFYezqn/iQJAl3LJmEKxaWAwYjsq9+GvjhfuDWzcCoE9WC1BS0K+LzKZaaUKdGPibI4vVmj5uHe8+fivLsZLhgwR6TGg069Hm/jvvp1Yf48r53dg5orkvpMQzGupOv1rZ84R3vL56NomnEDBIfBEEQYbhKZ1j1tMvwFZxqE00dHh/ajcLldCQKThm1DgWNZrUgM8AHI5KdLklmAwxa900faZeQpOYBmeUBtRL+OTalUiOOtgkTslLXfrF/4UzxOEt0LG3yjhHrG3YP6Nc6PfKA5rqMtnb0q82WYTUZkZ1iwT6lFD5zKuCxo7liM075/XL8+SPhURJpSHwQBEGMMB51totJUa/WTeLKdDgjH3aXD22mHP+GAbbz9ifywahxqENmvP6BbJHA4RZX8qlmCXCq9RDJAa9/EBR1Ex/FUiN21rCIg4Kczj1B4qMkS0RH6jzq+6yNuh+huS4l5v5HPrSOF9Ya3ZYtjnf1ivdQ2ezAXz+Jjs4XEh8EQRAjjE9Nu7COBd0AbJhI0QbL+WR82qkWGA5zzQdr5/3KDHHF7YSa2vFEdmKq2ysEXbrRn36BZWiCq3vk4w7TK7C0V6BcqoeVdZqwYs/8KXqXEYsIdUD9nc7+iQ+LaWCnXc3jo8SgdrqklwzotbzXKvw+ilvXI5og8TFAmOHMpsoWXrFMEAQxkG4XfeaKcfjER7JqMsZYL08ekbQL4x9XzeM1EU5FEx+RjXwwscVIM6nv6TB0EWldIpr4yJPa8bzltzjfsEbsUH5CkMApzbKhQ60P6W/kgw1/G4y7aZGippay1PbZPhifJ8TnC+0i8jGj43NkoNvwvQhC4mOA3PDvDbjkH6vx4vromexIEER049XSLlCL/ljR5jBhDnA/XS+rPhwMZfgLDNmcFD3y4VUn50Y48pFm0Ip4k4ds+a5FCz6U5+t+HyVSE+4y/0fsMGFJj9bdgUY+spL9nz3rZOmv+Mjz1ooVan1KX9y5ZBKuPn4UdiijsRujYIYHFxhXi0P1RL74lMTHAPlsn6iqfupzUbFMEATR36m2xhGIfDDOmylMp+oRUHDaoo6HH0ZMxgDxEeHIh0eLfBgHZ1kfivy0JD7I9pBShJNcf8MV7p8E79BNfKQnBaRdXANPu9S19/0eNts9MMKHDHf9gMSHzWLELy+YxgtjX/Kcytddb3wPT5l/B+/y3yHSkPgYQvqFIAhiIK22esHpMIuPv185F9t/Kaa4Puo9jw9Ow3HfxYhEPpToinykGtzDUu/Bn8JkQE6Kvxh4jTwN33Xfji7JBhTNBvImBXeVmA3oUAYW+dCiYIy6tr7FBxMohWiGgUXNWMSsj7kugRgMEh9K+IZvEVyKCaMNdTjNuAWpq38HeCL7+ZH4GCQOd9/hMoIgCIZPPeH4Ix/Dl3bRYAWQ4/JS8ID3Cmy/egtQfvyw/w6zwRAQ+eiKishHquQc1u4ereNF4wN5AbZevg64/iNmFNKjpbUdA6v58Hj99YJ1qoGZvs0nB9UT7qvrwIo99fowO2SUDTi1dOaUArQiDZ/KovZDp2odIgmJjyG2eREEQfR3qq1Rq8MYAfHBeOPGRXj/tlMwc5w60XQEIh9dUSI+tIJTPfIxTOJDq/vITbXAbJRw0exiHDd5FGDq+ZklBUY+WPePL6D4tY+2a0Z9Syew9hGguYLXYSx+cAWuetwvClhbLPuvs7TENaCUSyBTi4Tz7ZO+c4I3VHyKSCJ6tIgBw6YcEgRBDKTVVo98sJbNESAtyYzJhcOb0um15iPCPh9a2iVZcg9rd48W+Zg3Kgt/uXwOrMdojWWRj04t8sFwdQDJ2f2q/2Fk73gSaHoM8qq/YOvFn6G6tYvfXF4ff27hMQKcUehiY4sHJT5Y6oUZjq2xT8MFrvuw0LAbPzU/H3HxQZEPgiCIEcYbhrRLOGCRD1eUtdoyk/PhjHxMyBctqqNzU3jRJjt59wYTJmy2i0tSUzWa2Vk/0kWAgpMbRReNobMWeXue1/epaxOvqUn1+Mhyqm6ygxAfjDuXCAv4rco4vOdb6Ldc72edykhAkQ+CIIgwFZwaRjjtMtIE1XxEScFpsuQatoJTxmULylCUYcNxY48dwWBoUZEuQwqsPme/6j60/wuzpQMo1IbFARjzxS9wi/Gr+JvvEm7pztI/berU3uQWdQ5MwfRBvaYrF5ZjdE4KH2b3v63A52XfxaKTzxxWp92BQpEPgiCIMM12Mcha5CM2r/uiqebDM0KRD5buOHNqAU9h9bmv2aiLD04/IgnacV+eKwbVve9bgKe9ooX3BtM7kCCjtt2p+3ukGlwwNKnzWIpnD+o1sYF6i8bnYkyOOM4Pc78JTFxC4iOWCCx2ViI8UpogiNhAO+HEetqF13zoaZfoiHwkDbP4GAha5MMu9d/rw6v+XzijXAiX0RNn4D7v1ehSLLxzZ6x0FEfbnGjsFK9roe0oJEUWM136MVSuPzN6tIhKJCHxMUBsqtIdyFRCgiASGy3yIcne2BYfQQ6nka75UILFxzClXQYaJWF0DsDlVEu7pMqiPqSgsAQ+GLFTEbbpt5teRcHB/6K53c4fz7OobtpFs4Z8vBnJ0SM+YjP2F0GElbFP/wBZQRJBEER/Wm0NI9ztMtIYo8jnQ498KJrPx/DOshlI5KOzn5EPFi3XWm2NTlHvkZyZx5fb5DGYZ9iH84zrgMPr0NL6Oqy4C9OlCvHDzORsiGiRj9YoEB8U+RggWsgsWtQjQRCx873hr/mgyMdwpbKsSuQiH0lqJLy/LqcsAqZl641dYkqtNT0fKRYjn8ESSFbbDpxm2Ixxvv3DF/mgtEvsX8EwHE3VwNu3ATVfRvSYCIKIhbSLEvPiwxhU8+GIssjH0CbaDgZmr85o18SHq61f040ZBjXyAVs28tKs2CKPE48BrJQW8OXXjCtR5Do0pGLT7oPwGFXNjoiPCInN2F+E4CGzgMjHxPe/DnRUAEe3ADcsj+ixEQQRvbDvDX2ibQx3u5gN0TdYziJ3RTzt0iYn9SvyoXmTMKSuJr5Ecg5yU33Y0FSGX3uuQpOSjj0ow6mW9TjDqF7YJucA6SUYKqVZNhRnJKGmzYkNh5tx8gSR8okEFPkYAIEhs5MM25DChAejZhNTJhE9NoIgovu7w4yAeVCxGvkI8vmIDodTixL5gtN2TXy4RZFoX+6mZnghMTdURrKIfDAe952L1+WTsVMehf0IsMhnKZduc2UG23J7wrhcfn/1AVX8RAgSHwNAq1JmLDZsDt7YpjrQEQRBhPjuMAdFPmJTfPCaj2hptVWjCOYoiHz0V3xo0Zpsg7qfZACSMpGb6vfbYMMBAQmPe8SUYk7BtGE75hPG5fDlGhIfsUNgyKxQEsVCOlT3QRDEMezVgyIfsdrtYgwwGWP1Kz5vxCMfZuYsGqnIh1rz0eZT3xN3Z7/ER55B3c+WxafUZqktsIwzphTw5eu+k/w/OAydLt3Fx9YjrWh3Rq7wlMTHIDtdZqQJ5dohiTkAJD4IguhX2sVgHpYQesRrPiJssa5dDJp8XZErONXTLtZ+ig8RPc8zdvprOZhuChhet3iSqMNwwYKbk34D3yk/AqZeNGzHzIpO71o6CU9dtxBJ6vFHgtiU3xFC+4/DxiyXGETk433ffHzNsAI42i0NQxAEEfDdkSTF9lwXrebDhQDbcVZ0ak2LyLFoUQSzL/JpF4fS35oPccy5hg7W/KSLD+EfJZhbnqXfP+ucS2CcVTzsx33jaeMRaUh8DKa62gAYHfX8/mfeafiaZQXQrBafEgRBhIh8WLTIR4x2umj26goM8EoWmBR3ZCMfatrFGMm0i2avDmu/xIcWrcmS7EJ82MTwulllmUHeIQ9fOZfPdzl/ZhHildj9K4gA2n+cAmM7t0n2wYCNshhVjLYqkf+M4S8WgiBG7sJFT7vEcOSDFZwyPAYrTD53RNttmb26CV6/a2wEZruYjAb+nvgjH5396nbJYZEPdjpJFuLj+LE5+NsVczA+T6Txz41j0TGomo/7778fCxYsQFpaGvLz83HRRRdhz549+vbm5mbcfPPNmDRpEmw2G8rLy3HLLbegre3YxiuxgvYfp8QozGE6TDmoQQ6/CgCb2dBOHS8EQYQ2l9J9PuJEfETaaIxFPvSJtgxL+NMuWvSjU7H5Ix/HsF3QoueZCCg4VblgVjGmFqcjURiQ+Fi5ciVuvPFGrF27Fh999BE8Hg+WLFkCu12EmmpqavjtD3/4A7Zv346nn34a77//Pq6//nrEA9p/nGJJiA+XrYCHIBvN6qRBSr0QBBHCnDAo7RKjnS5azQfDI1kj7vXBvo9tmviQjBETdVazEQ4t7cIuQr0Bgqi3oXKS+r5ZE0dsdGdAfwVMSATCxAWLgGzcuBGnnHIKpk+fjtdee03fPm7cOPzmN7/BN77xDXi9XphMsftHF5h20dpsvamFQANw1FCIQlQCLaoNLkEQRDdL7bhIuxhF5MOtiY8Ien3wyIfk8qdcItRBxCIfrUgKODA7YA543K3lmmHTJ/FGJloTDQyp1VZLp2RnZx9zn/T09JgXHgyPWuBUoIoPJU1UIVcqoi+bxAdBEKHnugAmKX7SLu4oiXzoaZcIFJsGig8ZBviMfdd9aNHzFC3ykcDiY9CKQJZl3HbbbVi0aBGPeISisbER9913H2644YZen8flcvGbRnv7sb3xo+EKJgdCdJnSRbrlgFfY1aKF0i4EQfTSJadHPgJaVWMMoyY+DP3r7hjpyEeSJj4iUGza3evDZ0oWnTfHeE+0tItNG4aXwOJj0JEPVvvB6jpeeumlkNuZiDj33HMxdepU/OIXvzhmEWtGRoZ+KysL8LOP0rRLCkSoMSlNtEftcWnigyIfBEH0Ps8j1sWHFvlwSrboKDjV0i4RPIknqS6nTHz0N/JhA4mPQYmPm266Ce+88w6WL1+O0tLSHts7Ojpw9tln866Y119/HWZz739s99xzD0/NaLeqqipEe9pFEx/JqUJ8VPrUtFN7TeQOjiCIqCSeaj6MqhmWU+qfqdZIXwwmR1Hkw2PsW3xoQtRGkY+BpV1Y1TZrpWWCYsWKFRgzZkzIiMfSpUthtVrx1ltvISkpdOGNBtuP3WIBLWSWogi1b0nOgM1sxFGPKj7sDaLS2RQbr4cgiJFHKzJMMsgxH/lg9uqMLq3A0nVsX4uRgp2LmPiw6QWn4bdW7z7fxaNHPux9Rs+TFLVQl8RH/1MtL7zwAt58800e1aitreXrWbqE+Xow4cFabx0OB5577jn+WKvhyMvLg9EYOR/54UAPmWn/caypyE6RUd2aCtlohcHnAjqOAlmjI3ugBEFEDdrVrtUQMNslxms+HFLfV/kjXcTL7DSSDZFPu2gup25D3+JD+7+QpIsPdTZYAjIg8fHII4/w5eLFi4PWP/XUU7j22muxadMmrFu3jq8bPz7YO76iogKjR4+OC/GRrEY+2EyD7JQuVLd2wWkrRHLnYZ562dCWDpdXxqLxai0IQRBI9LRLkiTHTattV4TTLloEwRZFaRe3wdbvmg8rpV0GnnY5FkyU9LVPLOPprlqt6chKEe1zndZ8Lj48LUfw1ZeECdnWXyxBelLsXuUQBDF0tGFiFoNPzPOI4bSLSTUZ6+rnILWRwuNVayeipNWW4dLEh+vY4oNZwps1S/gEFh9D8vlINIRqVWCT1ciHJRU5KeIqps0kohxtdYf1/R0uta+fIAgkeuTDqvt8xLL4EJEPux75iEzaxeUT76XfZCwl4jUfegdQH622QZbwZhIfxADsfJmlDMeahqxkIT4aDUJ8dDVW8uXphk2wbngscgdLEER01XxIcdDtotV8RDryodmUG9yRLzhV0y79SUWxKFiy1mZrtACm2P2/MFRi33Y0zP/hU7X/OJB4yCwnVfznqYPoePG2HuFhtSctfwA+AzD9TKBgWgSPmiCIaOh2seg1H+aYr/mwI8I1H6rtQaoU+bSLzWLs9p4cO+1C7qYCinwMAPYfJ1XS6j3S+CwBLfJxRPX6MNlrMVM66P8he2NEjpUgiGhLu8R+t4tW89HZzxHyI178r0c+InciT7WKa/hOuW/XV48ckHYxk/gg+glXrQgQH6yFOE38hzvgzuDLTGcVTjDs9P8Q8/4gCAKJnnaxxNFsF7tijaj40CIfKVFQcJqiRj46ZM37pOOYRpUU+RCQ+Bhge1eaFNyfXZQh/sOt6SgEbNlIkztwu+lV/w9R5IMgEhot7WKOg4JTreajUxcfkUm7MCuDaCk4TVEjH02KegxdYvBob1EwvebDQuKDGMAVTGq3yIcmPmrtMmrLvsLvm7TcLsNeH4EjJQgi+iIf3rip+ejUrvIjJj66d7vYIi4+Gn2qmHA0H/MCNoXEB4fEx4DTLup/HKuIfGSnWPQ+7x9sCzZW43SS+CCIREar+bAgHtIuhuDIBxssJ4ffUqDTKYRccjSkXVTxUedV3UodTcfudtGLZFORyFC3y1AKTlnPiyTx6MehJgc2KRPwb/NlkA1G7O+04j7z01TzQRAJjmYyZo6DyIeWdmnXiis1AaJ+H4aLTpe3m8NpJAtORc3HUY8qgJxtgM8LGE0hOyYzKfLBochHHzz+2UH89eN9YpCRNzDtkq7vU5Shhfwk7JxyM1YWXY9aJWDYHEEQCUuPqbax3O2i2avLJkAyRmy4nCY+rFEU+ah1aecBBXC29noB64/WpCCRocjHMehy+/Dr/+3i90+dlMcLx/TIR0DIrCjTP7l3SlE6Wh1NqFVE9ws6SXwQRCKj+3zEUdrFI6vfga62iNR9dKhpF31GSgRnu6RYxGm03aMAKRki8sHqPlJyQ9b/+LtdUpHIkPg4Bk12vw2u/cPf4qe1byHPdFSsCAgzFuuRDyE+Nh1uQQMy/AWnbN6NJK4YCIJILDQ3TpMuPmI48qGmXdhUWX7lzsVHpCIfCqxyFIgPNfLh9MhQbNmQmPhQO17uf28XzAYDfrh0UkDkQxMfkTvmaIDSLseg2a4a2EDBzKrnkOdRhQfDlNTD4Y4xuTCN2+02KWpaxuuMWC88QRCRh5+oeeTDEzc1Hzyao6UNIhD5YAWnVngg8Ul9kU67+L//fUlqut3RxM8fj608iL8v34+mTnEh2+JwI1dqF/skeNqFxMcxaFLFRz5akYZuf2Cp+frdfNVojJGWZOaDhrqQ5B+xTB0vBJGw6FNtEfk5JMNV88HbhyMpPlxefwQh0oPlTEaYtffFmilWOprR1qWKTQCHmx1oc3hQeaQKZxo2ipVlxyORobTLMWjuFF8WkwxVfHlALsKdnu/jj1P3Y9zUC/X9Lpxdgm3VbThpvMjxWYxC09nN2bC4qoXRWM64iLwGgiCipNVWUdO4JlvM13yw16RYU9mEq4hEdlnNh00Tc6yGJkRnSbhTL60OD9zWLDHhxdGEVocWOQcON9nh2fk/vGH+OZIkD1A8Bygn8UH0kXaZb6sDS9fuVUqxWRmPPbMvwzibqnDZl4rJgF9dOL3niGWDGgp09263SxBEgky11cRHLEc+1LRLULQhIjUfnqiyKU+xCPHhNGWAJ9y7mtEaEPkY9cWvMPfoy3weKWfRrQlfB0hpl36kXU7OFBbpe5UyFKYnYXaZX3gca8SyU7JF1AWQIIjI49Hs1eNAfBjV9AJDtqhF9061hiHMaZcCqUU8SC1EpNHqPrrMWtqliadZGIsNm7nw8CkS/uX9CvZ+5T/A1IuQ6FDk4xg0q90uxe4KvrzsnLNw0wmn60VXvaE5njqlyFoQEwQReXyavbocX5EP2ZoBfsrtxdNipAtOp0iqk2h6ESKN1vHSaVAbDRwtetrlZ6Z/8+WTvnNQe/zPMHHh1MgdaBRBkY9+pF2ynJV8WTR+Vp/CI1B8dFHkgyASHjZGPSjyEQc1HwxfknqV3zVy4mPl3gbc8fJmdDj9KQyt5qMAauQjvRiRJlUVHx26+GhEW5cXmejAOIPoknw19Ur86OzJkTzMqIIiH32kXSTIsHjUmo0Uf4fLsbCa1RCcKD2iVluCSGB8mslYnEU+fFpnR5cqAkaAa578Qo8s3HfRdGHgZU1Hh8uLIkkd4JZegkiTohqNtZjyxIq2arR2uTFGquUPa5RsfG3RNF4fSAjonegj8pEGh7+XPEk1Dutn5MOuiw+KfBBEIhecsosYkxL7rbYGg6TXSfos6lV+GNIuy3bX47M3nwAeKIdn7aNwe2UUauIjLXrSLvXGArGiowaddgfGSCLq0WYbhW8cPyqShxh1kPjoo9U2Q7L7HfRM/bNF1gpOHdrkR7djxI6RIIjodzhN0tpCuxkUxiLMsZPhtWSMeNpFo7q1C/M23SN+/wd382VhNEU+1ILTRjldfL6KDENHDcYYRORjyvQ5SFIj4oSAxEcvuLw+HtpLh2NAUY/AyIc+dprSLgSR0GmXIPERw5EPhlb35tHERxgiH0b4/KPoWeuqVBuQdimOnoJTtw/ILOf3k+xH9MgHcsZH8vCiEhIfvcB6thlZWuRDK67qB5rPh12htAtBJDqs4DRJt1a3AIbYvgI2dRcfI1jzoTFdEh2HGucZ1iJb6oga8ZFhE5b5hxrtUFTx0dVQodd8kPjoCYmPPqYmFlhUI5sAU7H+pl06ZDVNQ+KDIBK61damXbXHeNQj0OvDbUrzp13Y8MwR5ETDzqDHd5n/I+6wFIctC5HmzCmi1mPF3gYccOfw+xOkahIfx4DERy9orV15Jueg0y7tMqVdCCLR8QSmXWK4zbZ7u63brH4nKr4R+47TUjzTDIf48iHlMnSllPp3yCiNCqfQ8fmpOHlCLtdgH9SI7/3rje/xVJEvOVdPxRB+SHwcc2QzkGvqGnTapd2niQ+KfBBEIne76OIjDiIfWtrFa7ACRuuIFZ2y8fPaROBxUjVfbvSMwmuFt8OrGNBiygWW/AbRwkWzReHrToc4VxgkBR2KDd6v/TumJxmPFCQ+juGgx8g2OgacdtEGy7XL6n84D3W7EESiwk6gSVL8iA8tGtHOviO178URqPvo8vj40gAZY9X0xX6lBD/dUYQTXH/HqnM+BiadjWihLFvM8tqtlPFlu2LDN913wzrmxAgfWXRCJmN91HxkSoPodlFbqtq8VvEOU+SDIBIWdgVvgyvuxMeVj6/D3qJ0WFA3Ih0vTtY5AqBUaoBV8sAFC2oUMTm81ZiFU6cFpF+igKIM0WBwQCnBFe6foErJw/XnLY70YUUtFPnoBdZmy9B9PgaSdlFrPlp9WsEp1XwQREJHPrRulzio+ZhSpBaasqt7pAw97dJ0IKQXkhb5mG4W7ap15lLI6ilr0fhcpCdFVyojP11NQQFYI0/DzZecgesWjYnoMUUzJD76SLukwj7oglMHtdoSRMLDWm3jqdvl71fOxcIx2fy+3SCEiDzYtMu2V4GH5gJv39Jjk9MjbOknGoX4qDaJdAbje6eOQ7TBuhxzU/0CJC/Nf5/oCYmPXuh0iSuVVLlz0K22dqj/+XxuwBtgMkQQRMLg9QV0u5hj292UYTYaMKNEXIx1SKl8+ac31+GtLTX9+vnt1W34/nMbsWPvPuC168XKba8Asoh0dI98aIPZLIVT9M6S48eKdtZoQ0u9MPJSY/+zHklIfPRR85Esdww47WI2ivkH+mA5hoeiHwSRiHhlBdY4arVlZKeIlHKzIiIfqXIbbnnxy3797PPrKvHe9lq898JfgjfU7wp62KXWfBShkS9nTJuBP102C2/cuAjRSkFA6iUwDUP0hMRHHzUfSb7OAaddJEniqRcPTFAMal6SUi8EkbCRD1sctdoyspKF+KhVhMFXgdT/tEuLXbwXk337gzdUrQ166FQjH7kQz23JLMIlc0v18fXRiNZsECjQiNCQ+DhmzYcCq6d9wGmXwNSLzAbSMWi4HEEkJPHWaht4Yq32iouyAlUg9Ie2LpHSnmU4yJf7bbPEhsrQ4iNbVp87rRCx4oGipaeI3qF35xgOp6w9zqB4Bxz5YNhUBewzqdXg1PFCEAk71TbeIh+a+DjsTufLfKn/3S6tXR5kogNlUj1//Kr5XLGhcl2Pmg8zvEhX1AvA1OgXH9qMF6JvSHwcw+FUn2grGQGLKKzqLzaLJj60yAelXQgicVtt463mQ5xkDzrF92L+ANIu7V0ezFSjHgflQrznmCq+Y9sqgTbhZKqJj1y0iQcGU1TMcOmLG08bj1E5ybhr6aRIH0rUE73JsyhIu+geHyzlMsD5AVq7rZfEB0EkNHy2Sxy12jKyU0Qx5QFnGlhdfbrUhWSoc7D6oNXh1qfUblPGotJugDx6BgxHN4u6j4xL9YLTPC2ikloAqDNlopmC9CSsvOu0SB9GTBD9n2YEC07TB+Hx0T3y4TGoXzYutWuGIIiEIt5mu2jpBXY9ZocNnaqf0U9Mz0Ou292n26vd7cNEwxH+eC9G8WFs9vx5Peo+XF7Zn85h4oOIK0h8hECWFZ52GYy7afeaD5dJTde4SXwQRCLS4nDHXc0Hs1jPVOsb6tSOl6tMn8DwyHHA3g/6LDZl4+YZTTbhAFqbOUfsUPEZjjTb0f6fH+DijddginRYrCfxEXeQ+AiBw+PjajxDi3wMsNMlUHw4DWrBKUU+CCLhYCdb5hnkr/mIH+OpLLXotAHB348d7/wEh2sbgX8uBp67FPzLNOD9YIPixhmEIZkjYzxf7k+eLephGnZh858vRvrO51HcuR13ml8VP5hG4iPeIPFxDGv1TEPXoNMuSWraxWlQaz6casU2QRAJQ1WzKFpPN3riKvLByFHFh1WbW6OS1r4PLz90D1DzJbD/Y6BDTKSFz4POxmre5cJn3ZhsMOWM5psOdSUDZ9zL759nDO56iZVOF2JgkPjopc2WkWfWxMfgIx9dmvigyAdBJBxHWth3iIJydSQ8MvzzSeLFaMwFf3tpddIEvvw/83/0dYd2foFlu+uAd27HrJcXYqX1DrEhdwIKM0Vk+GhbF3Dc93Bw9OXwKga0Kcn4o/dr/l+WLGbJEPEDdbuEgNV7MHIMDsA3yMiHWeg6O0h8EESicqTFgRy0I11hf/8SP+HGC5rXx8891+A35ifxgOfr+GbKDpRgX9B+7378Ef7aKWNnyiswBj3BGBRlikhQdUsXNle34x+GG7DJJcbQNyIdk6RKfMW4HoZR0WupTgwOEh8hcKgzBTI18TGEmg+7pIkPSrsQRCJGPiYYVO+KrNFxlXbRxMcepRxfdf+C38/rAi7Aa/rcl2ypA8WuA1hkKIDR54THaMNuTwFmGA4Bo07C1EIxG+aT3fX8JvBf7N3kuQV/+so4XKIOlSPiBxIfIbCrkY9MyTHktEuHQq22BJHIkY/xamcH8iYjngg1u+Q9xyTcYfge9imlyJXa8JTlQUyWquAwbOLbN2ScjWtrLsRd09rx7flXYq7BhFllmdhS1ZtDqgRz8sAjz0Sc1Xzcf//9WLBgAdLS0pCfn4+LLroIe/bsCdrH6XTixhtvRE5ODlJTU3HppZeirq4OsYTdLcRHOgY+VK57wSmJD4JI8MiHJDwtkBdfrpdazUcwEv4rn8LNw3bL5XwNE19LjBv4/UdrJ8IFC5rzjgOMzCtEwq1njD/mIDbtQo5IYPGxcuVKLizWrl2Ljz76CB6PB0uWLIHd7nfvvP322/H222/jlVde4fvX1NTgkksuQSxhd4m0S+owtNq2yWprHaVdCCKhUBSFd7tonhbxJj76mtp6FNnoMOfBJMnIldrhUsxYK0/pMQPl9MkFeP7bx+Gtmxbh7ZtOwjs3nxTSsJFI4LTL+++/H/T46aef5hGQjRs34pRTTkFbWxueeOIJvPDCCzj99NP5Pk899RSmTJnCBcvxxx+PWMChRj5S5MFHPvzigyIfBJGItDo83M1zrPWoWJE7EfFE3yPjJWxIOgGned7ij7YapvCoB4OlWgJZND6XL0vV8S1nTinA8j31OHFcDmZ325eID4ZU88HEBiM7W7RBMRHCoiFnnnmmvs/kyZNRXl6ONWvWhBQfLpeL3zTa2yMfIehUIx/JuvgYROTD0j3yQeKDIBIt5WKFG4Xa0LUs4eaZCOKjIN2KunYX3nHPxmkQ4qN47lJ8WxqDr84vxeRCMQ23Nx6/Zj63Yqex9PHLoD9ZWZZx2223YdGiRZg+fTpfV1tbC4vFgszM4JN1QUEB39ZbHUlGRoZ+KyuLfB+8w+WFCV5YZdXnYxDTFK0mIT6afar48LDOGRFRiVd21LShsdPFLZLx+FnAMxcAXtXZkSASjKoWB4qlJvHAnBJ3XhWawyljUoHoWtEYmyvGSrzVJuo5GCVzv4Kfnje1T+GhQcIjvhn0p8tqP7Zv346XXnppSAdwzz338AiKdquqqkKkYaHSdKidLgxr//5YQkU+mj1i+mO8z3fZW9eBc/+2Ct/768vAvy8GjnwBVKwUUyrX/RN47BSgWUyyJIhE6XRhbp6crFEDnowd7aRYjLCo07tLsoJbiHNShTDxwISLXb/El8f/lamPiBwnEUfi46abbsI777yD5cuXo7S0VF9fWFgIt9uN1tbgtinW7cK2hcJqtSI9PT3oFg2ttjlSuz/lYjQN3ufDK4mZBXFusf75/ka+vNb5PCD77ZY7lv0ZeP9HwNEtwKcP+n+g+aAQJKsfisThEkRY0i6lkvi7QKbo/IgnWKdKttrxwi62xuSqc6xYp2BAQemXygRI0y6KyDEScSI+WPU2Ex6vv/46li1bhjFjgnOY8+bNg9lsxieffKKvY624lZWVOOGEExArsILTfC1Pmza4mQK6vbrHB1jT4r7uw+2VUYxGnGdcCwUSjk65lq9Pq1oGKLLYaet/xJwHWQZevEIIkg9/CnjU9BZBxBGs06VUaohb8RGYekk2G3HtiWJOy4T81KBuFkZhevwM1COGB9NAUy2sk+XNN9/kXh9aHQer1bDZbHx5/fXX44477uBFqCyKcfPNN3PhESudLlqrbQHahjTK2WYx+MVHShpgr49r8cGu8mYb9vP72+TR+MHm2VilZpyOKtnILSiFuX4rOjf+B/+rNOLyht3+H977PjDt4ggdOUEMLz5ZwTVPfoFV+xtxiVlNu2SOQjyiDZdLsZpw9fGjkJlsxvzR2Xh7i5hay0i2GJGfFpB+JoiBRj4eeeQRXpexePFiFBUV6beXX35Z3+fPf/4zzjvvPG4uxtpvWbrlv//9L2KJoMjHIMVHkhr5cCZI5IPlt2caRE3HNnksjij52CWXwadIuMvzXVRki9799V98DvfeZcE/vPWVSBwyQYzY3wITHox4TrsERj5Y2sVgkHDh7BKUZNqQnuSPfLBICNtGEIOOfLC0S18kJSXh4Ycf5rdYHiyXL6l1K2lDFR8yFGs6GykVdUZjX1Q0452tNfjR2ZP5lctQqG7twnTpIL+/TRHpuG+670Gm1Mmtliukw2AuB+mdBzDf4OTbHSfcieQ1fwQOLAO8LsBEV0dE7MP+5jXKDQ3+gtM4ZHJhGt7egqB6D0Zg2mV8fnAnDEEwaLZLIO1HeaSDDZbTxUfq0Go+GLIlVUxzjDLxcdlja/gyxSTjRxNqgbGLAVNfxkGhRSm72psREPlgNCATDYpou97pLcJSVhdk8E+8/J/1XHwt5VnA3gAcWQ+MDnY2JIhYxOUVPkFpRjdytPRtnEY+vnfqOG4INrFAtNaGEh/dtxEEgxqpNfa8B/xpMrDsV7zbJU/70hhkwakW+WB4jZrXh7jijzZO3fZj4IWvAeseGdTPtzg8yPUcRYbkgGK0YNLMBT322dSZA1/AQO2DciHePugDxpyirlg5+BdAEFGEyysiH3MzOv2t+oMwKowFjAYJkwrTeOdLIOk2/3XtxG4eIATBIPGhonzyK3Fn1Z8hu+0BNR/5g/6j1HrgvQY1neCNvq6OiVIVjnd+Jh5seHJQz8GiHksMYnCUVDIfRdnpQflexsEWL+pNRfr6dfIUbDvSCmXMqWIF8wQhiDiA13mxlIve6RJ/Hh99kWzxi48JFPkgQkDiA8CyXUfRUu83NztbWou8IaZdAlMvHskadZEPVtfCuM4YMK/H1clyKP1+ji63D//ddATbqttwsXGVWDnjqyjM8BsOscp3xtG2Ljhlf+TjceUCHjE5mqVGSao3AT6/PwhBxCouteajJM7bbI9FaZaNd7kwI7LigO8DgtAg8QHgwWdfZ/MX9cc3Gt9AutQ1pILTIPERhZGPhg4xT2eKodK/0tEItPXfYfYvH+/FHf/ZgmffeBfTDIfBTOlZy2xRQE//1OJ0/iUkK8ATbjHz58iCH8NWOIHf39KZCVjShDFZo78ehCBiPe1SpAS4myYYLO38+Y9Ox9ofn0GdLkRIElp8PLP6EObd9xFONOzgjzfJ4yFbMzDGUCd2YM6kg7BW726x7lYnOUZT5KO+nR2LgjGSmLipGMz+CEQ/+e+XYlT4VUZhKnc492Q+v6IwIynIXKg8O5nff857OuY6H4X3uJswo0TkwLfWtAMF08TOdeJzIIh4SLsUyXUJG/nQ2nDTAlpuCSKQhBYfP39rB5rsbkwzHOKP15oWoHHOTf4dyhYMKVebpxrrtHlN0Rf56HTxaA8rEpUVCe3jLxQbar7s93PkplqRCgcuMYqakYbJ1/BlUYD4yE4xo0wVH2zEdjPSkZ1qwYySDL5mS1UrUDBVbK7bPkyvjiDCn8a8/71d2HakDdbW/chGO/Ll+oQWHwRxLBK61dZqMvAQ6UTpCH+8zVOC4yZegyc+Owik5OKeK38ypOcvzbThCzbGxGWIwsiHC6Ml4VBbgxx0pk5DBl4FAp1H+yAtyYSzDBuRKjmxTy5B+pTTe4zaLs1KxihdfLBJlRLSrCYsGC0mBW883ALPjKng10f1O4fvBRJEGHniswo8tvIgPvt0Gd61/hjFlvHI9cS3uylBDIWEFh+sKKqioQPjJZE+2OUtwvbaLjzmOx/TUtMBs23Iz89odKnRE68zqiIfYw0i5VIhF6ITxZjMHgyg7qK9y4NTDMJGeY08FV/NE0ZDrO3unZtPQrvTgwKWdsnxi4+sZAvfPj4/ladkatud2OErw2y2sZYiH0RscrjJzpffNH7Il3PZqAHNa4wiHwTRg4ROu3Q4vXzkdZLkgVMxo1IpwLNrRArm+LE5Q35+dtXPqHNokY+uqIp8aPUeFUoR9vnUrp6WQ4DX3a/naOx0o1wdGV6p5Ae1100vycCJ43L5fa3mIzAqwgTIKRPF9o+acgBWc9JRA2zxW/UTRKygjZCfZTgQvIGNZ0iK/KRugog2El58TFCjHjXmMsgw4ECDuII5e/rgW2y7Rz5qHYg+8dHhxFhdfBRijyMNMKcAik8IkD6QZQUtDr/4qFJ690MZlZMSFPnQOHlCHl8uq3ACp/xQrPzfHUCX2uZMEDFCe5eXT7CdYujWLZbLhgoQBNGdhBUfHp/MJ85q9R6NNmEJrhVSzi0XNQlDoUQVHzV2ZcgFp8zCfG9dB/fWGA5a2jv1Lp9t8hgcbXMCOePExqa+Uy9tXR4+vZNFjhjXnauahYWADZrSuu1YsamGVnR6qNEO5eQfAtljAXcncEg1PSOIGIEJ8VlSt6gHI29SJA6HIKKehBUfnU5hsqWlHtpT/OLjioVl3KF0qBRl2HizTIfPPOSC08/3N2HJnz/FNU+xEtahU962nne6dFlzsUmZKMRHrvDe6E/dR5PdhRR0IUcS/ijHz5vb677M6ZW9F4zsgMhHUaboimEisLnLB4w7Q2wgq3Uixmh1eHjkowcU+SCIkBgSOeXCKDYKG/XMotG6HfgtZ6gn4SHCTrqsqNKpWIYc+XhxvTAD+6KiCfjiX8D+j4fUFrjYu5rfd084l6eb6tqdkLPH9xr5WHuwCS99UQmFzcD5zzfR2lCDMu3L1pYNJIkoRm9odR+BnTBWkxEF6aId+Yp/rcWzdeIzIKt1IhYjH5r4aFQCajxIfBBESBK226XDJay8i9QZLnOmTcXz02Zg3qgsmI3Dp8mY4ZarfegmY1b1mM41rAPe/ZtY+bMmwDiwj/Cfnx7Avn17cJ9RiI/UeZfBtKkdXllBm60MPNnU2tPl9Ov/XCuWSVfyZXljE8ol1Ro9SxUNx2DBmGysOdiEacXpPYpy69pd2FvXiT/U5eFqmwFS414xYTjdPwuGIKIZNiqgRGrk99fJk3GuUY1QUtqFIEKS8JGPPAjxYcwoxqLxuUHTaIeDJJMRTuFiMaTIhyaIrjMFzGKp2zZg58Xfvrsbcyv+yTt8thqnwTh6EW+HZdRLaodPu2ifPRb59at0c7b+2EffdsYErL77dCyZVhiyKJf/WqTCk64KmeYQ+XOCiEJYPVZrQOTjE19ACjKNBDRBhCKhxUcSXEiD6G5B2tC7W0JhMkr+tMsQIh8OXhxbhfmGvf6VlSIa0V8qm1nbjYJzjev443fzvsUdXIvV2otqX6ZffAQMmGPFuYwMqCPCVW41vS7ujDmlz9/N5jsUZ9pCFqMG0mVRBVCnatBEEFEOS2N6ZRmlauRjkzIB57t+jQ9OfzfhptkSRH9JYPHhQaHULB6wFtMhzHA5FhajAU5ttovPxXpUB/U8TcwUTC2O1alcM6DnONzkQDrsSJdE768rfxZfasWgFW71PfDYAWeb/nN2dQLuGNURtQczLsNQvVA02k1ql5E9RPEeQURpsSkbVZAsiWGNR5UcbFPGwpflL2InCCKYBBYfXhSg1R/1GKErFB750MTHEFxOmzrdKFDrU1iHCufwmgGJGebCWKZenTUo6cjLFif6UaoD6Z4mH2DL6pF6YVd2DM2OvT57HlZhDr9/dNp3AGsqBosWddFokdToC0U+iBgqNtXqPeqVLLjUv3c2voEgiNAkdOSjQIt8pBeP2O8xBUY+hiI+7H7xsS/rFBGpsdcDlaJwtL+RDy0vXa3koViNeDA3UsbWI21AeonYub0Gbq/MvTw08THGIMTHPm8hvu28Bbf4bkfO+fdhKHSPfDTKab1HPlja6v0fD6nThyBGothU87upNeQHdXMRBBGaBBYfXv1kPlL1HgyzQYIPRsiSadAup8xNtNnu0o/3CHMTnapOod3yYr+f53CzX3wcUfKQahXHNLNUiI999Z3wpYoCOWdzFU554EMcvn8hSv57MSTIeuTj06Z0OGFFy+hzYEka2vwbNuPl95fOxJlTCvjjo970kOKDtQL/++FfAGsfBp67FHAF158QRKRgxaYTDcKssMZY4i82Nyfs1ytB9EnC/nW0O70o1MVH0YhGPhheg3XQkY/WLg9kBchXO3Mq2Ql6tmh5xY43+13IWtlk18VHV3IJ7+5hMC8S5urKohzNJrFu3/69yLBXYKxnL9LqN/B6k1Gq+DikFA7b/BvGZQvK8NV5peIYPSkh0y6/ensnxjUF+H9sfHpYfjdBDJUWuxvTpMP8fpVV9cqhyAdBHJOETrsUSU0jH/noLj4GEflgUQ+GFvk40JUGlJ8AJOcA7g6gXtikHwuvT8aRli69Iv9rZ54Im8WoD3nToh9HvKLmQ2mrxjjJX/cx17BPLzhls2AYU4rUFMkwoJmNVXSp4oOllAKor63GQsNu/4pl9wH/uxNY99iwHQNBDIa1B5sxVW07r0v2m4pZKfJBEL2SsH8dnU4PFhj2iAcF00fs95iNopDVM4TIB5seyyiQRIHs9rZk+FgnbOFMsUNt334fdR0ubiRWalDTGZnB3hya+dcBl1ia7UcxPkB8nG74ktuxaxNsGWNzB19o2h3Na2S/XU3jdDb4232PbsEjnTfDJMnYK5cARbPF+7j+ceC9/wO2vTpsx0EQA6Hd6cGmPQdQol7INKdNDPL4IQgiNAkrPtI79iFPaoPXaAPKjx+x32MyqJEPaSiRDzf3JMmQhCdJtS8dR1ocQOGMnuKDdb/UfAn4RJGoRm0b+71sEJyIfCCzPGh7fpo4vkpF1F5kdR3GBDWPzTjHuJ4va5RsXu/BRFWgQdhQyVN/f60v3W/I5rYDsg948ybkKi04ouTix57r4bnkSTGqXOPt24Dtrw3bsRBEf/lgey0myAf5fSVrNEzJarcWRT4I4pgkzl8HOylXfcFv8uF1mNv8Ll/tKjkBMKnCYAQjH26DZdCRD+bxka9GPVjnTDuSeWeKO296T/HxxveBfy4GNj8X9BxscBzz+EiFiF4goyxoe4Y68G2HT9ReFMp1mB1iSuchuVCf0aLVswxXeirNaoIDSZBNNn/qZevLQO1WtCvJuMD1a2xQJqPBXIw/Tn0FLy7dCIw+WaSeXr2eR0gIIpxsqmzBZEnMXZIKZ8IW4JBMrbYE0TuJ89che4EnzuI3w1NLcK30P746afJZI/prmc8HwzOEyAdLuxSoxabtZlYQKuHmF7/EDz4R6RjUbhcRApZ+2PqSWLf9v0HPUdvm9Ec9UvIAS3CLa1aysICvdibBq3a8lKkpGk/ACCCt2DQtSbWMH0ZS1O4br031MelsgLzxGX73Ue/5aIaIiry9pQYPfXoE976zF54rXwMmLOVRHXz5/LAfE0H01b4+WqoTD3In8GGSGsM9qoEg4onEER+MrDH8Zk8pxyG5ADtNU2Gc+bUR/ZVawalbGnzkg6VdtOJYV5LfR2BZYyYUFiVgjqRMWL12vf+HrGk9Ih/6yO9uKRe+ymbR3Rrb0v156y7FghcN5+uPtWJTrU13OEmxii9rR6o632XbKzBUrYWsSHjNd7K+37NrRGeBx6egpsMLLLxBbNj+KuBVBRlBhEl8lKseH2zAYqD4YO7GBEGEJnH+OkwW4NbN/PbYrFex2P1nPD35USA1L0ziY/CRjya7S/cR8GZP0NfLMKBz4kXiQfXG4B/qqO0R+dDFR7eUCyNTjXwwt8Z6m79d8H15AV7pmqc/PgrRXrt40vC/b5qgqSlhkQwA6/8lFsok1CFb36+61f8eHmpyAGMXAyn5gKNpwJbzBDFYXF4fjrZ16QZjTHwETsRm84wIgkh08RHArtoOvpxSNDLzXAIxqV9AQ4l8MGv1SZIQH+aiaUHbDs66E26zeB0PeL6Oi12/FBs61VCwCvuSPGbkQxUfLq+MQ/AbJT3uPRfblDGoVzIhS0bceu3V+OGSifj+4nEYblKThPioyD8zaP2rvt4H17268Qg+2dvkH11OtuxEmGCt61BklGl/V90iHwRB9E7C/aWwCMCaAyKFMTUc4kO9EnKhZ+SDjbi/8O+rcO+b2/u0VmcTbRklk+bhljP80Y8adyou6/whfuq5Dv/0ncdFgi4+AibTishH6E4XLeqgCaWPPDPQoGTgdd8i7FBYCkTCOa77sWrJu5gwYRJuOn3CiBgopViE+Hh3Xxe2557N7z/mPRcTl3wPVywsw5lT/CknbRQPq/+4/pkNcBjVNJNTnddDECNMZZMDhWiGWfIBBhMfTUCpFoLoH8OfuI9yfvn2Dj6rZFZZJuaP9ofyR7rbRRs2FSg+Vuypx5Yjbfz2y0VJ3OwLOT0jCvaONowyiCt6KX8q7hiTix3Vbfhkdz1W7GnAZmU8NvtEqqQBqvjwuYGuFiA5mzuXMp+PUlNojw/+vJKEzGQLGjtdWN9owgLXP4K2NyEDxjx/OmYk0NIu/9t2FB/j6yiWzuJ21V+eMArJFhOeWX0IH+8S78M50wvx7jZ/aqlVSQYvoe0i8UGEBzaosVz9u+SC3mDEwjEj/51CEPFAQsl0Jjo+2CFOWPdfPAPGMORktRywQ1LbR93+mSSsYJLxf6aXgL/PFy2ydtV1NcCZNN8l3BPl5DwgJVdvdWW8vrk6aH83zHAY04PqPho6XPDJ8jHTLoGpl6pmJpAkjM5R3Ua7daOMFIHPz8RahVKEeaOyuPAI9CJhnTlfXxD8Ghq86vtLkQ8iTLBZSYH1HoyZpZl44TvH4dO7TovswRFElJNQ4mNrVSufkVKSacNU1dFzpNFSGQ6oJ0eXqDdhdHl8KEAzfmB6CxJrFXW1A/s/6jExc4YkTIyk/Cn6+pxUcSJmk2e702ZSZ650CvFR1eJAJjqRJqlRl8yeBaeB7bYaY/OCHUxHosOlL3Fz5XF+kbF4Uj7OnVGEX1wwDePyg4+txqW+vxT5IMIEE+mjtDbbgGjiieNyUZ4T3MpOEEQCi4+Nh4VXBruaDhda5MOOnpEPVkiqRyM09n4Q9LCp04mrjJ/w+9L4M/T1OWrkIxRtRvX1dYgvxkONdkwxVPqjHpbgiIZGhtpuqzE2N3i/dNvIio9UtdVW45Gr5nKxocFm0Tx81VxcOLsExRlJuHB2sb7tsEMVTizVRBBhoKa1yz+CINffnk4QRN8klvioFCemueV+C+SRRjMZ64SYXRI4Cp4NjNNmQvgM6snzwCdB1ujeA59y4dDFClbnXaOvz0n1C4X0JFPQa2qRsoM6Xg412TFVnbqpz4PpI/LByk9GB4iPZIsReWq0JRyRDxYxOnt6oaiDCQFb/9evz8F7twr/jwMd6rFT2oUIE6zle4LahYb8yZE+HIKIKRJGfMiygk165CN8RWHabJdOJXTko0TtQKnIP0tMqXW2ARUrUdfuxMvrK5G8902+/fPk0wGbP2Kj1XwwWArpqesW4rpFIu/cJGmRj1rdC2OqQRMf6jyYY9R8MHJSrEGPx+al9CoERkJ8sOLX/vy+MbkpYJmtWrcq7ijtQoSpfszZZcdoddIz8vwpUYIg+iZhxMfRdiev92CzFyYP4yj4vrCYxAnUrkc+2oNaaItV8VFnKACmXSw2bHsFt7z4JX702lZYDi/nq/ZmBntd5AZEIaYVZyDDZsZxaqV9laSmKhp262kXf+TjWOLDL2hYcWegGBjXrf5jJGCzXXqrP+kNZmFdmJ6ENkWN0lDkgwgD1S1dGCsdhVFSgKQMIE04/xIE0T8SptWWFZlu+fkS/qUR6EIYrshHhxb5CEq7MPEh0i7VSg4wY4kYE7/rbWxtPwujpRbuzeFSTGjNXxj0vIGRj2lq8aw2S2K3NEZsqN0KRZZR3dSOcVJ1n+IjcErtV+eVBomBsbkjLz4CxU5WgBDqC1YL0gZVfFDkgwhTvYeecmFRjxGOChJEvJEw4oPBWmvDXYWu1Xx0yNYQaReXHvk45MkGyhaKgtDWSpxk2I5CqZlv2yBPwglTynsVH+PVzg9NfOyRS6FIRkiOJhz+789wpbcBFrMPii0bUghrdY1zphdBvlzh7YIs0rHrqD9KMy4/dJHqyKVd+j+4jhmeNWmRDzbnxucBjMM/+I4gNI60dukjD6jegyAGTkKJj0igRVna5eCCU0VReNqlxCgiH3udmeLqafxZwIYncFbSbiR5RI3Kankabhmnts+qMKFx7Ymj0dblwfTiDH0do8NrQmvKGGR17sfo7X/H/6nnYWn+dce8QmPW0BfPKQ3ZWhuOyEfqICMfVrMB7VrkQ4t+jPDMHiKBkWU0NtRjiWFzn0XcBEGEhsRHmHw+2jTx4e3i3Sx2L2DxdiLd5OCrdznUOpSxp3LxMc+3BQrLJ7PSjdTJIe3Mmd9FIKyeRbNtr7cWIQv79W1dUhJsJ9w0oGNPt5mDCjtHGm2qLSMzpf+RiySTkQ/Z85jTYPZ0iLoPEh/ESCD7gOe/itsPLOMVcz7JDKNWq0UQRL8h8RG2yEdAm6q7A80Oq+7x0aKkotph5GmYnNEnQ4EkajTUIMX3vq5Oru2DJLNBFx87jJMwCZ/xx497z4Gz5ATclDywLh9WxPrwlXP587K6inBGPgLrTfoT+WC4TelCfFDdBzFSfPYngAkPlbqSs1A8wL8rgiBIfIRNfDhlE2C0iJkrrk402aEPi6s2lTM/caza38gNtLwFs2CuEyFdJbUAY8f0b4KslnZhzqnPyUtR563Df30nY59SiisKeq/1OBbnzvSbfIWz5mMgRcFWdZKo05yGFGbiSkZjxEjgbAdW/Ynf7UQy757rnHdjpI+KIGISEh9hKjj1+GQgOQ1wNPGi0331wBSDEB/unMmsFxevbDjCO1cyJn4Vear4kAqCUyt9pR8Y7EtxT7OMTd4rgnw7op1AwTEQ8aGJLqc204babYmRYPurgMcBJWciZtT8nA+NXj9+QaSPiiBikgH3nH766ac4//zzUVxczE2g3njjjaDtnZ2duOmmm1BaWgqbzYapU6fi0UcfRaJiVltt+RA5i1q06erE5qpWTJKE5Xn6qDl8ySIfS//yGb7MEuPkOQHGYn2RZPF/nHa3L2hboCNqLMCKXwca+egyqnUzlHYhRoJNz/LFxtzzoSgSr8PKjbG/K4KIWfFht9sxa9YsPPzwwyG333HHHXj//ffx3HPPYdeuXbjtttu4GHnrrbeQiJhVkzGvLANW9eToaseWqlZMViMfZVPm6V9iPlnB6iNu/MpzNexSMnDizf3+XRajoddmFm0QXbRz8ZwSFKRbcf4s/9yWvtCKcbsMqrijyEfM8fTnFfhklzqkLRphzsM1X/K7398yTvcOGmnXX4KIVwacdjnnnHP4rTdWr16Na665BosXL+aPb7jhBjz22GP44osvcMEFFyDRMAVEPhRLKq8hdTnaUVPrQZFF+HhYi6fj9R+Y8fV/ruXzIrZXt2GD7xzsK70a/y4WUZH+wL4IWeqF1Xx051iD6KKJP102i6eNmCdLf9EKbe2a+KDIR0zBhPgv3t7J7x964FxETVfLpmeAsuOAgml46Z338HVmLqZkowFijlJJgCkfQRADY9itPk888UQe5aiuruZeFsuXL8fevXuxZMmSkPu7XC60t7cH3eIJs1rzwVCs4uRYU9eACYpIuSgZpdyeuSw7GWdMyefrtlW39bA77y+9daXEStqFCaiBCI/AyEenQY0sUeQjpqhqEe3mpxm+hLLvY0QF6x4F3rkdeO5SHG6yY+eXq/nqnfIofZfiDBIfBBE14uOhhx7idR6s5sNiseDss8/mKZpTTgmeTaJx//33IyMjQ7+VlQ2uKyNaMQUUTipmIT5aWpoxWR1xLxVM17eXZQn3VZdX5svMAJ+N/pLUS61ELBScDhat5qMdFPmISpixXsPeXjezYux0dOIpy4OQnr8UaFOdQyMFS5F+/ldxv+Motm1ZjylqfdYuxS8+ijJV7x6CIKJDfKxdu5ZHPzZu3Ig//vGPuPHGG/Hxx6GvaO655x60tbXpt6oqUQcRbyZjDJ9ZGHW57G2YrLbZIn+qvr0sO/hKaiAW4907P7QaEAZLS/d3UFssoju7SjRcLupgk5UfXQQ8vBCo2xFyF4fbhzJ1zADny+cQUQ58AnT660/kne/oU6FPX3yGf73wACQIItKttl1dXfjxj3+M119/HeeeK3K3M2fOxObNm/GHP/wBZ555Zo+fsVqt/BavBLaMymrkw9PVhklqsSnLJ2uUqpGPQJOvoYiPKUVp2HKkjVuVB0Zg4g3NZEyfbEuRj+jh1W8BLYfE/YrPgv6/a7Q6PChSByzqXSWn3AUYRt7YrjssVdyx/kXwpm1TEuB1YlLjxxilDpGbNmcRrmh34PUvj+Br8/yjCAiCGBjDekbyeDz8ZlCLLDWMRiNkFspMQFj9ghb88FpFoZrJUY9JWuQj4MtYS7toDKbmQyu+ZMwqy4ypYtOhpl1adfFBJmNRQWcDcPhz/2O1W6Q7YrpzQOSjvRpoPohI8M6mQ8Ce9/h9z0WPcbfhSahAkuSBkpwLZI3Bry+aju2/WMrrtAiCCJP4YD4eLJLBboyKigp+v7KyEunp6Tj11FNx1113YcWKFXzb008/jWeffRYXX5y48w+0qIMrZwpfzravQqrkhGwwAznj9f0yuqVGZpaKgXGDjXycND43bHNZIon2mlsU9WRAaZfoIFB4MI6qg9i60cLFh+j80mmuQCRo3f4B0iUH6pRM/OHwBHTkz9e3SZPPBQwGfkERz5FEgggHA/4L2rBhA+bMmcNvmq8Hu3/vvffyxy+99BIWLFiAq666iheePvDAA/jNb36D733ve0hUzGrooytXFJcmK8wDHHBlju8x+v3UiXk8UvLgV2diYoHavTEAtOFyLGVz1tQCPPOthfjNxTOQCJGPFp8qsjwOwOuO7EElOP/89AB2rnlXPJiqziZq3KtPdQ6k2eEOTrvwlZGJfMyvfZkv/+c7Hhsr23A4/3T/xqkXRuSYCCIeGXDNB/PvYHnR3igsLMRTTz011OOKK8RVkg/OpAIoKfmQ7PV8vTzq5B77Pnb1PBGGzrQNKQpQmiUMkJiYiXes6mtu9gXUDvHJtqJ1mQgvjZ0u/Pbd3fjA8rm4vJl+KVD1BdBRA9RuA0adECLyIdIuncmlSHUc6b/4aDoASAYge8zQD7zqC0zp2gSPYsQT3nMgtTuxbdypmKj8CV3mDGSOCd2xRxDEwKHYYRiLTj0y4Mn0f0la510ZUjwMVnjw51RrPpj7YqKg26t7Je6ZIh5Q6iVS1LU7kQwnJhlEkeYK53igUG0pb9jdS+RDpF1qMtU0R3/ER/tR4KG5wONnAl7X0A982yt88YZvEaqRh/p2F/a7snC++9d4fto/e0QpCYIYPCQ+wmg05vUpcNj8tuGmktnD/ru0tEsiuS9qJmPcHyVJFNlS3UfkaOx0Y5xUw+83KOm49j8V6LCp/j1a50sAbXYXCiHER0XavP6Lj/X/EktHI9C4b8jH7avbxZdrZdH+7vbJ2FPXjr1KGay5wxBZIQhCh8RHOCfbyjK2TLoVn/mm4960XwoDjmHm3BlFfDLuhbNLkChoHT5OZitvU8UHRT4iRmOHC+Olan5/vyzaURtMhWJjq/DL0HB5fUhxNcAkyTzdsS9pun8/n7f3X+JxAhue9D+uF/bsg6W2zQl7tXiOGnO53iG2tUq4DRdmkKEYQQwnJD7CONl2zYEmXPNaDa72/BhHchaNyO86cXwu/nfLyZitttkmAhT5iL6ajwkGIT4608fyZb0mPrpFPlrsHswyHOD3DypFqJFzhL+G7AXahKtoKPbvWB/cUt2LgVl/YPOUvvmPj5DuFUWvrsyxyE8XYqPDJQRQofqYIIjhgcRHGCMfb24WX8iMy+aTQdFw13ywq2h/5IO8PiJFk92NCWrkoy1ViI8q5IcUH6y4+kSDEA6r5WnocMvcS0M8kRAl3dld244/vtLNMXkIkY8H39+NlHbxu2qVLEhJGShMDzY+LCDxQRDDComPMBacHmyw8+V9F03H2dOLInxU8YPW4eP0yFC0yAelXSKadhmnig9n5gS+rPDm+kUhG0+vUtns0MXHGnkqOp0eIFf1vmnaH/L5V+5pQDFEd4wvRY2o1A1efLBjGK9GavbLxUixmnqkWfK7iRGCIIYGiY8woBkSedVhEGNy4tv0K9xoHT4MnzUjfGmXIxuAf50OVK4d+d8VQ7S2t2OUJGajKLkT+bLGYQSYQyijxV/3ceDgPow31ECGhLXyFHSyNEeOECy9FZF+UdGMErU1typXbVdvPzLoaFdbl0cvkLWnj8P/LZ2E/DS/+MhOseipPYIghgcSH2E0GettgBwxPGkXhtcSxlbbJ88GqjcC/71h5H9XDFHQtgVGSYHLlo/UHFH43NDpArJG+1MvzCuo4lPM2fkgX3UoaSqfStzh9AK5qvho6ik+ZFnBhsMtuvjY7C4FMkcd0769L9qdXoyRavn9paecjOklGUGRjkWqUzBBEMMHiY8w1nwwmA4Zio8H0RM2vVdrHPJYwhT5aNgDyJ6Azgz1PoHJjg186Sg9BXlp4v8688zQjcBYOmXH68Az5+NE50q+6vCMm/lSRD7UtEtjz7TL3voOHqnQxMea5mSgdIHYWLV+UMfLnq9MahAPsoSQmVyYrgvb+y7sOQyPIIihQeIjzJNtmfAIfEwMHebkqhedmtLDE/nY/HzwYxYBIXhkYr5XRCCk8acjL83qj3zki9lG3qPbcWj9//SfWaHMRfHcc3uKD+aI2s2OfX+9eFxuEOJja0caZE18HPliwMfL2rPdXh9KJeE6rEVR5o3KwvPfPg6r7z59UAMeCYI4NnQWDAOBYqOcJmGObLutKS08kY/uBY77P0Gi4fbK2Hi4BV6ff2J1a8MRTDOImo6UKWciXxUfrQ4PPHkigtB8cCO6KoRQuM/zDTxa8HNkqCf4TqcXii0LSM4RT9gc3PHCnicFXUiHECFVci7ac8WcKRxZz9TPgF5Du9ODDNiRLol5S8gsD0q35KRSoSlBjAQkPsKUFtAg8THCRmOa+BjByAczpOo4qtYjTP+qWB5ejUTjV+/swI8e/Q/q/noa8N6PgI462HeJFthdGANzegEfcKg5/DaliuLTfOchTDEID4+3fSegMDsDmclmnjpjRdnMIbW3otPAlEs7UtCJZNTZJgAmm+ii6aVDpjfauzwo1VIuKfmAhf4+CSIckPgIA1ccV440q5jhN7VYTQsQIxL5cBjTRzzy8cs3t8LSKeaWYNbXxbJmU8LVfTy3thJXGpehpH0zsO5RrPz7d7Bv9Zt8295UkQoxGCTkqtGDOjkLsGXrP39UyUY9slCYYePt0pow31ff4U+9dPP6YGKhTE2R1BkKxC5dMlA8Jzj1sud94E9TgR1vHPM1tHV5e9R7EAQx8pD4CANssuzqe07Hi985Hlcu9Id1ieFDq/lwGFLFCo9jeIaNdYNNdN68czeskpfbgS9zTxHD7Njvq9uORGOCpIow1kLetRMzXJv4/fZi/wRYLfVS2+ECCmfo67fI4/iySPXUmJAvolb76joDvD729Ui7jFbbeBstopOm0e4GyrSiU1V8rPgt0F4NvHINUN9zmF0oMaN3zRAEMeKQ+AgTaUlmnDAuR/f8IIaXZDWy1OxlJzJpxFIvVc1dGGUQJ78jSi6+qOwM6LYYeMFjrKNNrmWUGxqQJ7XBoViRMfEkfb3W3XW0tQtdpWKsQIuSioe9F/L7mqHXhAIhHPfWdRwz7aJ5iLQll+umZvpnwLxXmOgMFBxPnAUcWtVrzYce+Qio9yAIYmShMyERF0wpFFfNW6o7gKSRS718WdWiXylXKgU42tYFlB3n74DpEH4RiUAGOpEviffYqXUZAfhcnoYpZbk9xEdNmxM7x16HS10/x4muv2GbIqzXizPE9omq+BCRD83rY7/wBAkQH6NVT46uVBGpaLIz8bFQ7FC/E81b3gV8LiiSQax3tQOf3Ndr5EMTM5R2IYjwQeKDiAvmjsriy02HWwDWLTFCkY/NVa0o18VHPo62OYFplwDmFODoFlFn8PEvEO+wOToT1ZRLtZKLyrTZ+rYP5fkYm5faQ3ywAW4VzW5sVCahC34H0cJuaRfm5aGwFAgTD+5OoLPOn3YJEB++TOEb0sQKVNMK1LSJguy3r+Xrt2cvBS75p/jB6g092nY1MTNZLX5F/tRhe38Igjg2JD6IuID5MjC2HGmFPIKTbbdXt+ni47BSwDtfeH3Cd5YBBTMAxQeseRhwOxDPsBP+RDXlsk8pRQf8IwMsU74CY4Crb7EqLmqY+GgMFgCsE0YbXz8+P5Wb8LG6jsp2n78GIyD14nA49G4XQ844fYou50RhVKbxvGOBcFXNKBdTcqt62uD7OupQILVCYak6Eh8EETZIfBBxwdjcFN6u6fLKsEupIxb5YEPIitWTX42Sw8UHK0JF/mTge58BKXmAzw1UrUM8w07449XhcXvkEnxoOZPfP5oxG7++anHQvnrapbULe2o7ekyLZR0xDNbxcuI4ka55bVM1kDfJP7GWuZ2+cDkudL7Brdtlkw0pOcXqsbjFfgu+De+C7/J6ktvd38eetOOZAx0wRp3/UvFZj9eR0ixqQ1ptZYDVH60hCGJkIfFBxI3L6YwSYa3eqqSMSOSDpRrq2l0okpr541pkw+2T+Vh49SCA8eIkzOaWxDMNHS49/XFQKcZH9vE43/VrrD3uH/yzCCU+6jtc2HpETLQ9eUJuUKeLxtfml/LlqxuqIBfOEitrNgMbngT2vo87pBf4KjlrDHLV4W8sFXbbS1+CzW3cOevHmON6DK/LJ8OjmZ+NUTtvDn/e43Vkd+7hy7aMycP11hAE0Q9IfBBxAzO0Cmq3HebIR02rExJk5ENMT3UnF/Elr/vQ0E50cS4+WORDEx8s/XSoyc4LSJPS/D4eGiytYjEZeN0oEyCMyxeU8eXMUjVFprJ0WiFSrSZenHrEJgSBq3IjDm1eru/DxKV04i3ITfXbnr+xuQYHGzux62i73u10tFX9XErmi2XtdkD2Bf2+AodI6dizKOVCEOGExAcRN6RYRLttu1EtOG2rGtbnP9LiQA46YJF8vBjSnFGop2L+vmyfSCmMWuSfsOrzIl5parOjVE0/HZILeNRBaynvDkuraHUfjJJMG86bWYxVPzoNP/6KmPeiwVIvpVlqgWqySLtYW/ZgtFPY2V/r/j+cgcdgnHMFT9lo5n2Mw00O7DrqT+s02d0492+fYXVLOmBJBbxdQfUj7247imzHQfEgn4bHEUQ4IfFBxA0p6omo2ipaOIfb9Ku6pQuFUpP6y/KRlyEiLL98ewf+8OFenP/3VUBGGWAwi8JTNhgtzmCpDBb18LRUwiz54FTMqIMq9rj48IuBQEbn+gtSpxSJrpbSrOSgwlQNbRjdUV8GkCbqOhjNSipWyLOQZEvRhcrrNy7CZLXNuqLRjs/2qZ4dKjtq2vHd5770m5uxjiTVLO6nb2xHIcTnOXkKiQ+CCCckPoi4IcUqLNYPmcf5h78NY/ThCBcfIuWC9GK9XoHVgWiD1vY3OoAM4byJNr8BV7xw4/ObMP/XH6Pm4A495aIEfI30Jj5uOWOCPzMVIERCoXW/8C6Wkrn6+s0ycz2V9PSa1iFz6qQ8fv+FLypxoMHO0zYF6f6BcB1sUm7hTPGgditfHGy0w2HvQJYkum+MmaLWhCCI8EDig4gbktW0SzUKAEsaN5rqbs891LRLoVpsysTH8WPVyasBvLWlRkQ/GK3Dm/YZMb58DvjrbKBBFF8eiw93Cs8NS7uYXNtkDT5ppwcIg0Dmlmfhz5fPwszSDHy9jxED2iRZ1s7rO+1nOCCL2prPZBG9CBQfjNE5QswcbLDz5VfnlcLpkYPFTFFA8SrAp/FqhcM8JWOlmUsEEU5IfBBxF/mwsxNP4XSx8qi40h0UbDz78vuBjU/rkY8iLe2SXowl00TNRyDLdtf5bbrbVPOqaIYZb715I9BSAaz9R79/TJuvYs5VU1x9RD4YF88pxVs3nYRxAQZkodAG0TV0ulBnHYWz3b/Dua7f4BnfUr4+O6DQlDGq26TobxxfHlSM2uxww1M01z94ztHMzegCP0veqUQQRNgg8UHEDSlq5KPT5fPn+NUw+6BY/Tdg5QPA27dy23TW1aKnXdKKeL3Co9+Yx42xLpkjUi2HGx1Q0ktiI/Kx7VXg9wHiwS0iB/1B8zrJKfWnU1hHizZdeCjkqMKBRT6Y4PPAhB3KGMjq11V38VKe4xcfrP5jfH4a/nz5bCwcLTpvWJdNrWWUMIFjHizbXxORD2hRLPXzIggibJD4IOIu8uHgOX5NfGwb3JMx4bD8N/7H21/jVtyF3U5YZ08vxNZfLMWvL56u1xd0JRePSLfNsMIKL1//rkhNaTRX9PvHMyGESm6BvyDUMkxDE/PUyAer+ahq7ukUy+o8AilSZ8MwtFQYa+H9z/dOwChVmDCDM8y+gt9XtrzIaz78KTQSHwQRbkh8EHFX82F3B0Y+tgUNJjsmTQeAp74CHFgG7HhdXCWrKFv/g06XV59oGzgBlRU4st+thfrrDPnRHflg6SSWamGW4+mlwPE/EOubD/T5oyy6wchUCzXTMkWxJ4O9P8NBYOSjqqWn+JjQTXywCNTSaQW8S+YHi9ViYxVtaF0NGwA4/VJ+X6reiBS5E8Va2kUrECYIImyQ+CDirtXWzk6CeVMAyQh0NQPt/Wx5ZekV5oL574uBXW+JdYvv4Z4e0tHNGCvV6N4WyJ3Y48dZ6yij0pfj73bpr/AJE+sPNePwmteEKLOmY+1Zr+HezovFxq4WXg9xTNSXk6GKD8kWbBI2HGg1H2xa7aHGnqmgUN0yLP21+u7TkZ+e1Iu1uxNIKxSzXlhkxHAwqHiYIIjwQuKDiL+0i9sLmJOAvMkDS70E1occWS+Wc68BSubxu98wfizWsam5KT07XcrUwsd9LmbzLglTq04xhC4aaLG78bVH16DpgwfEigXfxtefP4BnNzTAblUjGM2q6VYImDcGs5NnZBvUiIQtK8joazjIVlttPT5F764JhPl7dIdZuptDpH2KM/1D7QLdTudI+1Bi0ApOKfJBEOGGxAcRN6RoaRdWcMrQUi/7PvTv1FHHi0d7wK74nWLuiIbM3ErTi4Cxp/HH1xg/EBty/EWWgZSpzpyHW33+tMwwtvoOFVZDkQYH5hr288etM76lb2tJ0o6399QLEwMMM7xIUlTrclsWrjhO/Kxm9jVUmLjQumYcbh+sJoPu/TFQmJuq5kLLKV3AF3MM+1EqqYZkWms0QRBhg8QHETckW8QVcZfHBx/z+9bEx4YngPfuxv7qBvgeWQQ8vLBnPUaIoWO/8V4t7owT4oNNU+XkhhYfWtqF1ylo+zSJE73O9v8CvykCnr0oyOo7HLQ7PShXW2TdSTlY1+j3y+hIEekINO7t9ee1QW0ZarEpj+5YM3Dnkon47cUz8OS14sQ+nKkXxsIx2fjL12fDZjbi95eqZmH9ZJxaH7K/XqSJUCoiHycadiAVXSI1lz1m2I6bIIj+QeKDiLuaD8aTqyrQPu58PUohb3oG9z78JIyOBhHhePpcYKda18E4vIYvavNPwh65FD/3XIMnDqRjU2ULD9V7TAF1Br2Ij7JscZXNOzS06EigwGA1Fe/+EPA4gIPLgf9c02PQ2UjS6vBglCo+tjpy8N1/b9S3HU3q25JeFx9qvQeSMtjgFt5ee+Vx5Xp9xXCgtS5rE3BPnpCH7b9cisvUgXT9ZWK+iMawNukOp4cLUtlgRpLkETuwGhCTX+gQBBEeSHwQcQMLz2uzQn7z7i78ZFkzcNN67slh8Dhwo/FN/86th4H/XA0cWI799R3Y+6WYQvuusghL3b/XDa3+sfwAYLJg67jv+n+2l7SL1vJZz+zWc8b1jHys+gvgaAKMFuGqWb9DuIuGorMBOLjSL1pYxIQZgg2BFodHNwc7rKgdOSqVmiX9MepjmH08I0tSIx8jUGyqcdPp4/H7r87EeTOLcNl8IThCzYHpi4xkM/LVWTFvbq5BvUNBW2bABNsQhcMEQYw8JD6IuIEVHWqpF8bbzOqcOVdOFEJikVHMI3GNOxtIzhU7rX4Ijy7fhxKnSDe8cEQUki4aL5ZsUBm74l9X8HV87JuDDlM2UH7CMf0pmNeHO3NccOTD5wE2vyDuf/UpYPHd4v6mZ3o+EZtH8++LgGcvAN66BfjbHODV64CXrhhSpKTV4dYjH4flYHfWCqOadmmvBuxqIWY3tGLTHKMmPvwD5Ubis2Si4+9XzkVm8uDqPTQmFojoBxsk9/3nN6EhQ03HMfJIfBBEJCDxQcQVzHOjBxPPDnpYP/P7wLc/5i20OPAJyo6+jxTJBbtixUFFtF0eNyaHFz26vDL21XWizSnj254f4q+z3g7Z6cJIt5lgUq/Om22jxMqWQ6KY9YOfAPZ6ICVPiKEp5/vt3z1q8abGxqf86Q8mTljkg1HxKRdLOptfBHYGRHP6gJmkaT4lLPJx/Ulj8PPzRRSg0WsFsrXUy7ZjRj5yjP5Ol1hgQoHfF4Q5mx5NVa33GRT5IIiIQOKDiLvUi0aSWb0//iwczjye3+1SLKhNmSSKDKcJf4tbW3/HlzuU0bqFNzO6ml7MWmaBbdWt/MTNJ6omW495ta4ZZNUjW6RWFB/wxBLgi8fETjMvB4xmIHOUECKyRx/zzvG6gZW/D35idpI/WxwjNj8vlg17gTe+B/znm/1uJQ6s+TisFPJCziBvFK1AVx2+1lu3S7akio+kkUu7DCdaIbDGXtMk/wMSHwQREUh8EHEFq2sI5IMdtWjs8uHJ0b/HzzzX4kbPLWhxqbUDp/8MCqu/UNku+7sespItfAIrY+uRNlV8iBqC/hlkefTOCq3d9qBUhjurTkI185xg6aDShf5hZxo73xARkrQiIThYQeRVrwlrcINJdKOwdtjd7wS8yJ/0672x2zv0Sa715iKcMC5H9+jodHqBsuPEjp/9Cajf1WvBaZZh5NMuw8n5M4swNs9fMLy5MwNfyuPRaikACqZF9NgIIlEh8UHEFZpIYLCx6qyj4zvPbkB9pxf/9i3BMnkuDjTYUdnk4NEP+6K70aHYUCXn4XXfSUHiY4YqPrZXB4iPXkbGdx8Hzzw1MMr/fLVKFk7vegCv7ZfxzOpDYmWZ2ppaFSA+vvinWM6/HpUTvokn5r0Bd+Ec0VnCfEcYe94D9rzr/5mKlUDDnj7fm/xWEdFghmJv/vACpCeZ9cgHt0affz1QfiLgagM++2OPn2cpKP4eSLElPpjr6bI7F6NcNYE71OTAZe578cSc1wBLT7dUgiBGHhIfRNzzZWUrGjr8A9R+9/5unPLgci4QDky4HjNcT+BM+SFsU8YGuWzOKhVphZ1H21HbLuoy0vsQH7mqGVZjpxvKKH9h6ucyu8IWEZcvKlRbb02c7P9Y1IW0VnJnVUUywDnzG/j+8xtx3zs78Yu3RaEsJp0jlh/+xO/AWqDWL+z+X5/vw4QO8TPtxScjT7UhT1XNvOyaK+zx3xM7txzuNfKRic4R73YZCbSul8NNDj4p12YbvtZggiAGBokPIiFoYJGIEKLkKBs4xtw5i9IR2MmZlWxGaZaNO2SyWoeDDfZ+RT5y1RNcU6cL7Tmz4FLE/mu4+IAeSeEW8Cwtw8a8M9+PDU8Cu0U0Y691Bub/ZSt21LTzxy+sqxQ/OOvrQJp/DsnBrEXAguvFg8BISC/Mcglfj67yU3sU6PK0C0N7/hAusFrBaTpiK/KhkZ9uDRqAl6I64hIEEX5IfBBxxWNXz+NTT7vPG2FXu91hZmDMfIpRkpkUNBuEtXeyAtJTJvqntvL1faVd9MiHC80uA570nY0t8lh86BPzYdjkW6+scOHD6z5OvFn84Pon9GF2L3fM7DEhloskdrK/5J/wGm28ZuHCo9cBE9VoCIuEHGMuC7OVH68cgqxIkMad3kN86Jb0bPga3/+omH4bIvKRCvW9tKYjltBaoUOZ0hEEEV5IfBBxxdJphfjojlMxttvY9VDsq+/QxQczCDMwMdBtdPwpE1Q/EHV2yeiclH7VfDTZ3Wi2u/A77xW40P1rtCOVC5OTxovn+9XbO7G7th2YdpGo5+io0S3eP5SFUAnkwx3qgLUxJ+Oh2e/gYvcv0YFkdFhygfFnim0f3dvrcfmObBCvWSlBRk5hjxMw8/BweX1+8cG6cNhE4BDiwwa1NTjG6iW6T7xNCfCEIQgivJD4IOKSxoAaj95g/h2884SLj6SQDponjsvV23cfuHQmDH24bLLIBv/9nW40dbqDthVmJOHaRWP4SW9PXQce5u6pVmDKBfo+K3yzcKSb+yhj+R7/dNxtTazlVRxHLRNPS34tZpTsehuoDW2P7qz6ki+3K2OQrtZ5dPdFabF78MqXtZCT8/zRjxAFpzZFnRDLWoljOPKRTJEPgogYJD6IuOQHp6kOo8dgb10HtlS18vvj81ODaj40WGvtC985Di/fcDxml/VdYKm12vK0iz1YfDCBw57jD1+bFTxpdcZX9X0e8l4U8nnXHmyC0+PjY+03q8fMqGHiI38KMOYUsUIrRA2gxe7GF6uX8/v7jONgCkgvMcHFBrYxrnx8Le56dStqZfV1th8N6fOhT7SNschHnlrzoZFqpcgHQcSM+Pj0009x/vnno7i4mOfE33jjjR777Nq1CxdccAEyMjKQkpKCBQsWoLJSLZojiDBwxYJyvP6DE3GVOu6doaU8NNqdXhxp6eKupAtGZ/ca1Zg3KhvHjQ3tatodFt3QxMfu2o6Qs18006saNeqC0SdjdeYFeNh7AVImnISXbhCGaIzFk/JQmJ7E24bXVTSjqrkrSNTUqgWzKFKnvdZu7XFMq/Y3YqJSwe+XTfU/t4bW8aIV1e53poWMfGhplyQ98pES25EPKjgliNgRH3a7HbNmzcLDDz8ccvuBAwdw0kknYfLkyVixYgW2bt2Kn/3sZ0hKCs63EsRIwoTEnPKsIHfLy3uZiDqrLJPXPpw5pYA/Zl0ug4VFPuaWZ0JRgFc3HgkpTErU52ftvyya0eGWcW3DlXjQ+3XcedZEjMtLDTphMgHCWLGnHiv2+tMvDK1mBYWa+OjpdnqkugolkpjXctUF5/ZtSc8MzkKID9btIkEOiHzEVtqFGY0FvtaQVvwEQYSFAf/1nXPOOfzWGz/5yU/wla98Bb//vd8iety4vkPgBDGS3g4M7STOuO/CafjZm8I/Y94o0TJ67/lT+YmfTVIdCpfMLcWmytYeHSss7aK18bJUR5fHx8UDszZnBZ9MuDAhxFIrGrICnD4xDy+tr8LKPQ3YdqRNb/llxme85iNQfNTtEMPnDP6UgqlyFV+22cqRkdSzQ6X7SbjFmNNr5MOGgFRSjEU+WKTj4jkl+Pda4WESOISQIIgYrvmQZRn/+9//MHHiRCxduhT5+fk47rjjQqZmNFwuF9rb24NuBDFcXDi7GN89ZSye//ZxSEsy42fnTeW3bxw/CseNyeZ1HprYYI6f3188DmWqE+ZgYc9nCairYFfczF2TFa8yWLpSi35Ut3Tx1A9DW8e2axSkW7FoQi5PDR1stGPD4Rbeofudk8cERz5yxgHmZOEZwuzXGUzEVG/CovqX+cPWsT2jHowWR3BtSj2yQtZ8sILTFK3ThRW8mmPPpOvqE0b1SDcRBBHj4qO+vh6dnZ144IEHcPbZZ+PDDz/ExRdfjEsuuQQrV64M+TP3338/rw3RbmVloUPjBDEYWHHlPV+ZgkVqvQeb5Mpu7AT/9HULsfyHizFTdTIdLphHyOmT/R0rP/nKFHz6f6fpaRcGMy9jfOOJdfjjh8IavVRdx/jr12fjtEl5+O4p47goCix2PXFcDo+QMPTIB4t0aG6nVevEctWfgH+dhqmyeH7bwmtDHm+HZjCmUqtkizvtNT0iH8lSQMolQCTFChML0vD0dQvw7LcWwmqiyAdBxE3kg3HhhRfi9ttvx+zZs3H33XfjvPPOw6OPPhryZ+655x60tbXpt6qqquE8JILoFZvFiFF9+HYMlkvmlgRZtXenOEBo7KsXduXFmX5xcuHsEjx13UJ9kN2SaaIehaVrfnvxDD2Fw1qFu9w+dDg9wPgz/LNfWO3H8t/qz7dcmYe88oBprgH8+qLpmFSQhh9/ZTJ/fERW0y5tlT3FB1wxmXIJZPGk/B7mcQRBhJdhjTvm5ubCZDJh6tSpQeunTJmCVatE3rk7VquV3wginmAnOCYQWGeKNtAskLQQIX8tGhKKb54wmqdyzpxawItomSEYMy1jZmZT7n2fe3esvm4pUlfcDxxYxnIugOxFbdHp+M6h05FaMhmn9RKpOH9WMb9tOCRMxSp9qvhwtgHOdkCtE2EFp8kxajBGEEQcRz4sFgtvq92zJ3jC5t69ezFqlD/XShDxDnNIfe37J+Ltm0/SXU8D0YpcAykJ6MzpTpLZyA3KtO4dljJgBbKBbcP7pdFA5ijA26XPellV8i0+MK8gN7jNuLffwWj2WoAkNc3TdiTI5yNFT7sMrS6GIIjEZsDig9V0bN68md8YFRUV/L7m43HXXXfh5Zdfxr/+9S/s378ff//73/H222/jBz/4wfAfPUFEMSy1wmoMQnHWlAL88WuzsHB0dr8iH6G4YFYxbj1jgv64mRWOzr/Ov0PuRGz2CNEf2HJ8rDQUg6VxkFnWQ3ywglN/2iW22mwJgohx8bFhwwbMmTOH3xh33HEHv3/vvWKuBCswZfUdrNV2xowZePzxx/Haa69x7w+CIPw+JJfOK8UJ4/zmZVq3S39hRbO3nzVRr1/gdu4n3grMuVrscPKdqG519tu7RHM6ZYZmyCjrUffBaj70bhdKuxAEEc6aj8WLFwf5EITiW9/6Fr8RBHFsAutBAmeuDARtki53PjUYgAv/Dvfin8GSUYAjn6zsf+RDFR/Mc0ROLxVXJkFpFxnpetqFxAdBEIOHGt0JIoKcN6sI72yt4W6sgf4eA0HrptFs11/8ohI/e2M7rj1xNA43OfodVdHSLgxPWgl4pUqrv/uMFZz6Ix+UdiEIYvCQ+CCICMIKR1lL7VDQxAfrfGG8ubkaXlnB46vEPJfubby9H4s/C+tMVsVHW1UvPh8U+SAIYvDQVFuCiHEC0y4sJdp9oB1L5/THUItFXrTUS1dqqVjZfFDf7mbdLnHg80EQROQh8UEQMU5g5INZtbc6PDAGTOhlbbj9RUu9dKSOFSvsDYBdDKVze33k80EQxLBA4oMgYhx/zYcLW9XBc9OK03HbmaIN95sB80z6Qot8OBSr8AxhNOwK4fNBNR8EQQweqvkgiDgRH1XNXbjxhU38/oySDO4BwnxEppdm9Pu5dK8Pjw/Imwy0HgYadgOjTyKHU4Ighg2KfBBEjJOT0tNB9bixObyG48TxuXwwXX/Raz6Y0Vi+mPWC+t0BPh9qzQeboEsQBDFIKPJBEDFOui34z/hf35yPMwKm6g4EXXzwyMcUsZJFPlT/j6CptgRBEIOExAdBxDiB/iDHjcnGWVPFBNzBkBRosV6kRj5qtwI+L0+75EmtYp1Nnf1CEAQxCCjtQhBxwLkzipBmNeE3F88Y0vPYzAZ/5KNgBpCcI6bbHvoUmd4GFEvNUCQDUDB9mI6cIIhEhCIfBBEHPHTFHDg8PqRah/Yn7Z/v4gOMJmDKBcDGp4DXv4eLPCfwbe7sybBaKe1CEMTgocgHQcTJoLqhCo8ek20Z0y4Sy846fBtv8Lty6fwh/x6CIBIbEh8EQegkBRacMkadJKIfAZjLh2YHTxAEQeKDIIjQ3S4Mlnq5/N849K2taFds8ChGmMaeHNmDJAgi5qGaD4IgeoiPpz4/hNxUK248bTx/3Ix0XOn6HaZkuPFE1ugIHyVBELEORT4IgtCxBEy2/cvHe/X7bQ4PapCLulS1/ZYgCGIIkPggCEJnSlG6fp/Ncml1uPn91i6xzLQJK3eCIIihQOKDIAidUybmYfXdp6Ms28Yfb6tuw5ubq/Gf9Uf448zk/lu1EwRB9AbVfBAEEURxpg2zSjP5oLr3ttfihXWV+jYSHwRBDAcU+SAIogcz1Um4gcKDQWkXgiCGAxIfBEH0YGZp6NktFPkgCGI4IPFBEEQP5pZnIT2pZ1Y2M5kiHwRBDB0SHwRBhGy5PXNKz+m4mTaKfBAEMXRIfBAEEZKTJ+b2WEdpF4IghgPqdiEIIiTnzijG6v1NMEgSXt5QxddlUOSDIIhhgMQHQRC9pl4e/NosuL2yLj6yU6jmgyCIoUPigyCIPkXI898+Dp0uL3JSrZE+HIIg4gASHwRB9Mmi8T3rPwiCIAYLFZwSBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBBFWSHwQBEEQBJHYU20VReHL9vb2SB8KQRAEQRD9RDtva+fxmBIfHR0dfFlWVhbpQyEIgiAIYhDn8YyMjGPuIyn9kShhRJZl1NTUIC0tDZIkDbsqY6KmqqoK6enpw/rcxPBDn1fsQZ9ZbEGfV+zRHsWfGZMTTHgUFxfDYDDEVuSDHXBpaemI/g72gUXbh0b0Dn1esQd9ZrEFfV6xR3qUfmZ9RTw0qOCUIAiCIIiwQuKDIAiCIIiwklDiw2q14uc//zlfEtEPfV6xB31msQV9XrGHNU4+s6grOCUIgiAIIr5JqMgHQRAEQRCRh8QHQRAEQRBhhcQHQRAEQRBhhcQHQRAEQRBhJaHEx8MPP4zRo0cjKSkJxx13HL744otIH1JC8umnn+L888/nLnjMxfaNN94I2s5qoO+9914UFRXBZrPhzDPPxL59+4L2aW5uxlVXXcVNdjIzM3H99dejs7MzzK8kMbj//vuxYMEC7jqcn5+Piy66CHv27Anax+l04sYbb0ROTg5SU1Nx6aWXoq6uLmifyspKnHvuuUhOTubPc9ddd8Hr9Yb51cQ/jzzyCGbOnKmbUJ1wwgl477339O30WUU3DzzwAP9evO222+L6M0sY8fHyyy/jjjvu4C1KmzZtwqxZs7B06VLU19dH+tASDrvdzt9/JgZD8fvf/x5/+9vf8Oijj2LdunVISUnhnxX7A9RgwmPHjh346KOP8M4773BBc8MNN4TxVSQOK1eu5F98a9eu5e+3x+PBkiVL+Oeocfvtt+Ptt9/GK6+8wvdnIxIuueQSfbvP5+NfjG63G6tXr8YzzzyDp59+motMYnhhDtHsBLZx40Zs2LABp59+Oi688EL+98Kgzyp6Wb9+PR577DEuHgOJy89MSRAWLlyo3Hjjjfpjn8+nFBcXK/fff39EjyvRYf8FX3/9df2xLMtKYWGh8uCDD+rrWltbFavVqrz44ov88c6dO/nPrV+/Xt/nvffeUyRJUqqrq8P8ChKP+vp6/v6vXLlS/3zMZrPyyiuv6Pvs2rWL77NmzRr++N1331UMBoNSW1ur7/PII48o6enpisvlisCrSCyysrKUxx9/nD6rKKajo0OZMGGC8tFHHymnnnqqcuutt/L18fqZJUTkg6lBdhXAwveBM2TY4zVr1kT02IhgKioqUFtbG/RZsVkBLE2mfVZsyVIt8+fP1/dh+7PPlEVKiJGlra2NL7Ozs/mS/W2xaEjgZzZ58mSUl5cHfWYzZsxAQUGBvg+LZrEhWdoVOTH8sCvil156iUepWPqFPqvo5cYbb+TRi8DPhhGvn1nUDZYbCRobG/kfYeAHw2CPd+/eHbHjInrChAcj1GelbWNLltMMxGQy8ZOhtg8xclOnWS560aJFmD59Ol/H3nOLxcIF4bE+s1CfqbaNGF62bdvGxQZLVbIagddffx1Tp07F5s2b6bOKQl566SVeDsDSLt2J17+vhBAfBEEM39XZ9u3bsWrVqkgfCnEMJk2axIUGi1K9+uqruOaaa3itABF9VFVV4dZbb+X1VKwZIlFIiLRLbm4ujEZjj+pg9riwsDBix0X0RPs8jvVZsWX3QmFW1c06YOjzHDluuukmXty7fPlyXtSowd5zltpsbW095mcW6jPVthHDC7tSHj9+PObNm8e7lViB91//+lf6rKKQjRs38u+zuXPn8gguuzGhyIru2X0WwYjHz8yQKH+I7I/wk08+CQofs8csNElED2PGjOF/LIGfFctbsloO7bNiS/aHyP5oNZYtW8Y/U1YbQgwvrC6YCQ8WumfvM/uMAmF/W2azOegzY624rPUv8DNjqYBA0ciu9FgrKEsHECML+9twuVz0WUUhZ5xxBn+/WaRKu7F6NtbRp92Py89MSRBeeukl3jHx9NNP826JG264QcnMzAyqDibCV9X95Zdf8hv7L/inP/2J3z98+DDf/sADD/DP5s0331S2bt2qXHjhhcqYMWOUrq4u/TnOPvtsZc6cOcq6deuUVatW8SrxK664IoKvKn75/ve/r2RkZCgrVqxQjh49qt8cDoe+z/e+9z2lvLxcWbZsmbJhwwblhBNO4DcNr9erTJ8+XVmyZImyefNm5f3331fy8vKUe+65J0KvKn65++67eSdSRUUF//thj1kn2Icffsi302cV/Zwa0O0Sr59ZwogPxkMPPcQ/QIvFwltv165dG+lDSkiWL1/ORUf32zXXXKO32/7sZz9TCgoKuGA844wzlD179gQ9R1NTExcbqampvJ3suuuu46KGGH5CfVbs9tRTT+n7MGH4gx/8gLd0JicnKxdffDEXKIEcOnRIOeeccxSbzabk5uYqd955p+LxeCLwiuKbb33rW8qoUaP49xw7AbG/H014MOizij3x0RWHn5nE/ol09IUgCIIgiMQhIWo+CIIgCIKIHkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEAQRVkh8EARBEASBcPL/75jz/em/WMAAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 43
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:45.242547Z",
     "start_time": "2025-06-30T13:30:45.239721Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "\n",
    "a = np.array([[1, 2], [3, 4]])\n",
    "a - a.min()"
   ],
   "id": "d6838e4ffb0c436a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1],\n",
       "       [2, 3]])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 44
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:30:45.359425Z",
     "start_time": "2025-06-30T13:30:45.355491Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torch.utils.data import DataLoader, Dataset\n",
    "import torch\n",
    "\n",
    "# 超参数设置\n",
    "SEQ_LENGTH = 3  # 输入序列长度\n",
    "\n",
    "\n",
    "# 创建训练数据\n",
    "class ZhouyuTestDataset(Dataset):\n",
    "    def __init__(self, data, seq_length):\n",
    "        self.seq_length = seq_length\n",
    "        # 用训练集最大最小值统一做归一化\n",
    "        self.data = (data.values - train_data.values.min()) / (train_data.values.max() - train_data.values.min())\n",
    "    def __len__(self):\n",
    "        return len(self.data) - self.seq_length\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        inputs = self.data[idx:idx + self.seq_length]\n",
    "        targets = self.data[idx + self.seq_length]\n",
    "        return torch.tensor(inputs, dtype=torch.float32), torch.tensor(targets, dtype=torch.float32)\n",
    "        # return torch.tensor(self.inputs[idx], dtype=torch.float32), torch.tensor(self.targets[idx], dtype=torch.float32)\n",
    "\n",
    "\n",
    "test_dataset = ZhouyuTestDataset(test_data, SEQ_LENGTH)\n",
    "test_dataloader = DataLoader(test_dataset, batch_size=1, shuffle=False)\n",
    "print(test_dataset.data)"
   ],
   "id": "b2df8a4103011a4e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.6283557  0.61996644 0.63338926 0.6795302  0.69211409 0.65855705\n",
      " 0.64765101 0.6442953  0.60067114 0.58808725 0.6090604  0.58305369\n",
      " 0.58808725 0.6057047  0.63003356 0.5897651  0.57550336 0.61577181\n",
      " 0.62248322 0.65268456 0.63674497 0.6602349  0.63590604 0.60067114\n",
      " 0.60318792 0.58724832 0.59228188 0.57634228 0.59144295 0.61325503\n",
      " 0.57718121 0.5704698  0.55788591 0.56879195 0.56040268 0.55285235\n",
      " 0.55956376 0.5511745  0.5738255  0.58808725 0.58137584 0.62583893\n",
      " 0.63255034 0.6216443  0.61828859 0.61996644 0.61744966 0.68456376\n",
      " 0.7114094  0.75755034 0.75167785 0.74748322 0.73322148 0.68875839\n",
      " 0.69966443 0.6954698  0.74748322 0.71224832 0.90771812 0.87751678]\n"
     ]
    }
   ],
   "execution_count": 46
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:32:27.059406Z",
     "start_time": "2025-06-30T13:32:27.011889Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 画出预测结果和真实结果的曲线\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "model.eval()\n",
    "\n",
    "test_pred_result = []\n",
    "targets_result = []\n",
    "with torch.no_grad():\n",
    "    for inputs, targets in test_dataset:\n",
    "        test_pred = model(inputs.view(1, -1, 1))\n",
    "        pred_normalized = test_pred[0][0][0]\n",
    "        pred = pred_normalized * (train_data.values.max() - train_data.values.min()) + train_data.values.min()\n",
    "        test_pred_result.append(pred)\n",
    "\n",
    "        targets = targets * (train_data.values.max() - train_data.values.min()) + train_data.values.min()\n",
    "        targets_result.append(targets)\n",
    "\n",
    "x_plot = [i for i in range(len(targets_result))]\n",
    "\n",
    "plt.plot(x_plot, targets_result, label='real')\n",
    "plt.plot(x_plot, test_pred_result, label='pred')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "d412f462b112034c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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vXt3eHp6qosEbpIoLsfyDp3PoXVklaNNmzY4dOgQfwdrgXt9+AMmf7z++OOPMkvh8rEs6ZJ1YmNj1T+u0s9nenq6qnrh86lJnq4EHrJNsGzZMvWclSa/j15eXmWeQynFlf1kPocVk3+3eXl5fP4sMGLECLVtJStHpkvPnj1V3oLpmM+hdTIzM3H48GHVYoC/g7WguB6YM2eOqsaYNWtW8Z49e4onT55cHBoaWnz69Gl7n5rDZshv3bpVXeRX5M0331THx48fV7f/+9//Vs/f/Pnzi3fs2FE8bty44tjY2OKcnBx7n7pDeOCBB4pDQkKKV6xYUZyUlGS+ZGdnm+9z//33Fzdr1qx42bJlxZs2bSru16+fupD21FNPqeqgo0ePqt8x+djNza14yZIl6nY+f9YrXe0i+BxW7vHHH1f/huV38K+//ioeOXJkcXh4uKpeE3z+aqZeBB/ivffeU78o3t7eqvR23bp19j4lh7V8+XIVdFx8uf32283lts8880xxZGSkCupGjBhRvH//fnuftsMo77mTyxdffGG+jwRqDz74oCof9ff3L54wYYIKUEi76667ips3b67+vTZq1Ej9jpkCD8Hnr+bBB5/Dyl1//fXFUVFR6newadOm6uNDhw6Zb+fzVzNu8p/aWEEhIiIisoTL53wQERGRY2HwQURERDbF4IOIiIhsisEHERER2RSDDyIiIrIpBh9ERERkUww+iIiIyKYYfBAREZFNMfggIiIim2LwQURERDbF4IOIiIhsisEHERERwZb+H34PXUxU0d08AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 55
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T13:42:57.823438Z",
     "start_time": "2025-06-30T13:42:57.794165Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 画出预测结果和真实结果的曲线\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "model.eval()\n",
    "\n",
    "pred_result = [v for v in train_data.values]\n",
    "\n",
    "with torch.no_grad():\n",
    "    for _ in range(50):\n",
    "        x = pred_result[-SEQ_LENGTH:]\n",
    "        normalized_x = (x - train_data.values.min()) / (train_data.values.max() - train_data.values.min())\n",
    "        pred_normalized = model(torch.tensor(normalized_x, dtype=torch.float32).view(1, -1, 1))[0][0][0]\n",
    "        pred = pred_normalized * (train_data.values.max() - train_data.values.min()) + train_data.values.min()\n",
    "        pred_result.append(pred)\n",
    "\n",
    "print(pred_result[-100:])"
   ],
   "id": "910089e5da19afd9",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[np.float64(22.87), np.float64(23.26), np.float64(23.39), np.float64(23.39), np.float64(23.17), np.float64(23.41), np.float64(23.23), np.float64(22.92), np.float64(21.71), np.float64(20.94), np.float64(20.85), np.float64(20.5), np.float64(20.91), np.float64(20.79), np.float64(21.34), np.float64(21.07), np.float64(21.15), np.float64(21.2), np.float64(21.33), np.float64(23.13), np.float64(22.76), np.float64(22.64), np.float64(22.71), np.float64(22.64), np.float64(22.22), np.float64(22.77), np.float64(22.42), np.float64(22.25), np.float64(22.32), np.float64(22.77), np.float64(22.84), np.float64(23.33), np.float64(23.83), np.float64(24.15), np.float64(24.32), np.float64(24.2), np.float64(24.39), np.float64(24.71), np.float64(24.28), np.float64(23.53), np.float64(23.43), np.float64(23.59), np.float64(23.34), np.float64(22.97), np.float64(22.96), np.float64(22.86), np.float64(22.72), np.float64(23.05), np.float64(22.48), np.float64(22.33), tensor(22.5060), tensor(22.4387), tensor(22.4485), tensor(22.4566), tensor(22.4529), tensor(22.4557), tensor(22.4569), tensor(22.4579), tensor(22.4591), tensor(22.4602), tensor(22.4613), tensor(22.4623), tensor(22.4633), tensor(22.4642), tensor(22.4651), tensor(22.4660), tensor(22.4669), tensor(22.4677), tensor(22.4685), tensor(22.4693), tensor(22.4700), tensor(22.4707), tensor(22.4714), tensor(22.4721), tensor(22.4727), tensor(22.4733), tensor(22.4739), tensor(22.4745), tensor(22.4750), tensor(22.4756), tensor(22.4761), tensor(22.4766), tensor(22.4771), tensor(22.4775), tensor(22.4780), tensor(22.4784), tensor(22.4788), tensor(22.4792), tensor(22.4796), tensor(22.4800), tensor(22.4804), tensor(22.4807), tensor(22.4810), tensor(22.4814), tensor(22.4817), tensor(22.4820), tensor(22.4823), tensor(22.4825), tensor(22.4828), tensor(22.4831)]\n"
     ]
    }
   ],
   "execution_count": 66
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
